Comment rendre le widget Tkinter Text en lecture seule
-
Mettre l’état
Textàdisablepour que TkinterTextsoit en lecture seule -
Liez toute pression de touche à la fonction
breakpour que TkinterTextsoit en lecture seule
Nous allons présenter des méthodes pour rendre le widget Tkinter Text en lecture seule,
- Définissez l’état
Textcomme é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