如何使 Tkinter Text 控件变为只读
Jinku Hu
2023年1月30日
我们将介绍使 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()
作者: Jinku Hu