Wie man das Tkinter Text-Widget schreibgeschützt macht
-
Setzen Sie den
TextStatus aufdisable, um TkinterTextschreibgeschützt zu machen -
Binden Sie jeden Tastendruck an die
breakfunktion, um Tkinter schreibgeschützt zu machen
Wir werden Methoden vorstellen, um das Tkinter Text-Widget schreibgeschützt zu machen,
- Setzen Sie den Status
Textauf “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