HOWTO · Tkinter
Wie man das Tkinter Text-Widget schreibgeschützt macht
Dieses Tutorial demonstriert, wie man das Tkinter Text-Widget schreibgeschützt macht.
Auf dieser Seite
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()