Comment rendre le widget Tkinter Text en lecture seule
-
Mettre l’état
Text
àdisable
pour que TkinterText
soit en lecture seule -
Liez toute pression de touche à la fonction
break
pour que TkinterText
soit en lecture seule
Nous allons présenter des méthodes pour rendre le widget Tkinter Text en lecture seule,
- Définissez l’état
Text
comme étantdisable
. - Lier n’importe quelle pression de touche à la fonction
break
.
Mettre l’état Text
à disable
pour que Tkinter Text
soit en lecture seule
Le widget Text
devient en lecture seule après que son état soit défini comme disable
.
import tkinter as tk
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.configure(state="disabled")
readOnlyText.pack()
root.mainloop()
L’état par défaut d’un widget Text
est NORMAL
, ce qui signifie que l’utilisateur peut y éditer, ajouter, insérer ou modifier du contenu texte.
readOnlyText.configure(state="disabled")
Vous devez changer l’état du widget Text
en DISABLED
pour qu’il soit en lecture seule. Toute tentative de changer le texte à l’intérieur de ce widget sera silencieusement ignorée.
disabled
à normal
si vous avez l’intention de mettre à jour le contenu du widget Text
, sinon, il reste en lecture seule.Liez toute pression de touche à la fonction break
pour que Tkinter Text
soit en lecture seule
Si nous lions n’importe quelle touche à la fonction qui ne retourne que break
au widget Text
, nous pourrions obtenir le même résultat que le Text
devient en lecture seule.
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()
La différence entre cette solution et la solution ci-dessus est que le CTRL+C ne fonctionne pas ici. Cela signifie que vous ne pouvez ni éditer le contenu ni le copier.
Nous devons faire l’exception de CTRL+C à la fonction liant au Text
si CTRL+C est désiré.
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