2012-05-30 4 views

Antwort

9

Haben Sie versucht, das Text-Widget einfach zu deaktivieren?

text_widget.configure(state="disabled") 

Auf einigen Plattformen müssen Sie auch eine Bindung an <1> geben den Fokus auf das Widget hinzufügen, andernfalls wird die Markierung für die Kopie nicht angezeigt wird:

text_widget.bind("<1>", lambda event: text_widget.focus_set()) 

Wenn Sie das Widget deaktivieren programmatisch müssen, einfügen Sie einfach

  1. ändern Sie den Zustand des Widgets NORMAL
  2. I nsert den Text, und
  3. wechselt dann zu DISABLED dem Zustand zurück

Solange Sie nicht update davon in der Mitte nennen dann gibt es keine Möglichkeit für den Benutzer etwas eingeben interaktiv zu können.

+0

Ja, ich habe, aber nach den Dokumenten, die die Eingabe von nichts erlaubt, auch von Funktionen und so. –

+0

@PsychicOak: natürlich. Aber um programmatisch einzufügen, müssen Sie nur den Status auf "normal" setzen, den Text einfügen und dann den Status auf "deaktiviert" setzen. Ich habe meine Antwort aktualisiert, um diese Informationen hinzuzufügen. –

+0

* seufz * ich fühle mich jetzt dumm>.> Haha danke! Sie erhalten Ihre Punkte, wenn es erlaubt ist, xD zu akzeptieren –

1

Entschuldigung, ich bin zu spät zur Party, aber ich fand diese Seite auf der Suche nach der gleichen Lösung wie Sie.

Ich fand, dass wenn Sie das Text-Widget standardmäßig "deaktivieren" und dann "normal" es am Anfang einer Funktion, die es gibt Eingabe und "deaktivieren" es wieder am Ende der Funktion.

def __init__(): 
    self.output_box = Text(fourth_frame, width=160, height=25, background="black", foreground="white") 
    self.output_box.configure(state="disabled") 

def somefunction(): 
    self.output_box.configure(state="normal") 
    (some function goes here) 
    self.output_box.configure(state="disable") 
0

Ich stolperte über den Zustand = „normal“/state = „disabled“ Lösung als gut, aber dann sind Sie nicht in der Lage zu wählen und aus ihm heraus Text kopieren. Schließlich fand ich die folgende Lösung: Is there a way to make the Tkinter text widget read only?, und diese Lösung ermöglicht Ihnen, Text auszuwählen und zu kopieren sowie Hyperlinks zu folgen.

import Tkinter 

root = Tkinter.Tk() 
readonly = Tkinter.Text(root) 
readonly.bind("<Key>", lambda e: "break") 
Verwandte Themen