Wie man das Tkinter Text-Widget schreibgeschützt macht

Jinku Hu 30 Januar 2023
  1. Setzen Sie den Text Status auf disable, um Tkinter Text schreibgeschützt zu machen
  2. Binden Sie jeden Tastendruck an die break funktion, um Tkinter schreibgeschützt zu machen
Wie man das Tkinter Text-Widget schreibgeschützt macht

Wir werden Methoden vorstellen, um das Tkinter Text-Widget schreibgeschützt zu machen,

  1. Setzen Sie den Status Text auf “Deaktivieren”.
  2. 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.

Warnung
Sie müssen den Status von 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()
Achtung

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()
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Verwandter Artikel - Tkinter Text