Hoe Tkinter Text-widget alleen-lezen te maken
-
Stel de
Text
staatdisable
in om TkinterText
alleen-lezen te maken -
Bind elke toetsaanslag aan de
break
functie om TkinterText
alleen-lezen te maken

We zullen methoden introduceren om de Tkinter-tekstwidget alleen-lezen te maken,
- Stel de
Text
status indisable
- Bind elke toetsaanslag aan de
break
functie
Stel de Text
staat disable
in om Tkinter Text
alleen-lezen te maken
De Text
widget wordt alleen-lezen nadat de status ervan is ingesteld 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()
De standaardstatus van een Text
widget is NORMAL
, wat betekent dat de gebruiker tekst erin kan bewerken, toevoegen, invoegen of bewerken.
readOnlyText.configure(state='disabled')
U moet de Text
widgetstatus wijzigen DISABLED
om deze alleen-lezen te maken. Elke poging om de tekst in die widget te wijzigen, wordt stilzwijgend genegeerd.
Waarschuwing
U moet de status wijzigen van disabled
in normal
als u van plan bent de Text
inhoud van de widget bij te werken , anders blijft deze alleen-lezen.
Bind elke toetsaanslag aan de break
functie om Tkinter Text
alleen-lezen te maken
Als we een toetsaanslag binden aan de functie die alleen terugkeert break
naar de Text
widget, kunnen we hetzelfde resultaat krijgen dat de Text
alleen-lezen wordt.
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()
Aandacht
Het verschil tussen deze oplossing en de bovenstaande oplossing is dat het CTRL+C hier niet werkt. Dit betekent dat u de inhoud niet kunt bewerken of kopiëren.
We moeten de uitzondering van CTRL+C de functie bindend maken voor de Text
if CTRL+C is gewenst.
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