如何使 Tkinter Text 控件变为只读
我们将介绍使 Tkinter Text 控件变为只读的方法,
- 将
Text
状态设置为disable
- 将任何按键都绑定到
break
功能
设置 Text
的 state
为 disable
将 Tkinter Text
变为只读
Text
在其状态 state
设为 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()
Text
控件的默认状态为 NORMAL
,这表示用户可以在其中编辑、添加、插入或编辑文本内容。
readOnlyText.configure(state='disabled')
你需要将 Text
窗口控件状态更改为 DISABLED
只读。任何更改该控件内文本的尝试都将被忽略。
Text
窗口控件的内容,你需要将状态从 disabled
改到 normal
,否则,Text
一直是只读的。将任何按键都绑定到 break
功能以使 Tkinter Text
只读
如果将任何击键绑定到仅返回 break
的函数到 Text
控件,我们将得到与 Text
变为只读相同的结果。
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()
此解决方案与上面的解决方案之间的区别在于,CTRL+C 此处不起作用。这意味着你既不能编辑内容也不能复制内容。
如果我们需要 CTRL+C 有效,那我们需要将 CTRL+C 作为绑定到 Text
函数的例外。
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