如何使 Tkinter Text 控件变为只读
Jinku Hu
2023年1月30日
Tkinter
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()
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Jinku Hu
