Wie man das Tkinter Text-Widget schreibgeschützt macht
-
Setzen Sie den
Text
Status aufdisable
, um TkinterText
schreibgeschützt zu machen -
Binden Sie jeden Tastendruck an die
break
funktion, um Tkinter schreibgeschützt zu machen
Wir werden Methoden vorstellen, um das Tkinter Text-Widget schreibgeschützt zu machen,
- Setzen Sie den Status
Text
auf “Deaktivieren”. - Binden Sie einen beliebigen Tastendruck an die
Pausenfunktion
.
Setzen Sie den Text
Status auf disable
, um Tkinter Text
schreibgeschützt zu machen
Das Text
Widget wird schreibgeschützt, nachdem sein Status auf disable
gesetzt wurde.
import tkinter as tk
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.configure(state="disabled")
readOnlyText.pack()
root.mainloop()
Der Standardzustand eines Text
Widgets ist NORMAL
, d.h. der Benutzer kann Textinhalte bearbeiten, anhängen, einfügen oder editieren.
readOnlyText.configure(state="disabled")
Sie müssen den Status des Text
Widgets auf DISABLED
ändern, um es schreibgeschützt zu machen. Jeder Versuch, den Text innerhalb des Widgets zu ändern, wird stillschweigend ignoriert.
disabled
auf normal
ändern, wenn Sie beabsichtigen, den Inhalt des Text
- Widgets zu aktualisieren, ansonsten bleibt es schreibgeschützt.Binden Sie jeden Tastendruck an die break
funktion, um Tkinter schreibgeschützt zu machen
Wenn wir jeden Tastendruck an die Funktion binden, die nur break
an das Text
Widget zurückgibt, könnten wir das gleiche Ergebnis erhalten, dass der Text
schreibgeschützt wird.
import tkinter as tk
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.bind("<Key>", lambda a: "break")
readOnlyText.pack()
root.mainloop()
Der Unterschied zwischen dieser Lösung und der obigen Lösung ist, dass die CTRL+C hier nicht funktioniert. Es bedeutet, dass Sie den Inhalt weder bearbeiten noch kopieren können.
Wir muessen die Ausnahme von CTRL+C fuer die Funktion machen, die an den Text
gebunden ist, wenn CTRL+C gewuenscht wird.
import tkinter as tk
def ctrlEvent(event):
if 12 == event.state and event.keysym == "c":
return
else:
return "break"
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.bind("<Key>", lambda e: ctrlEvent(e))
readOnlyText.pack()
root.mainloop()
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook