我如何锁定Text
窗口小部件,以便用户只能选择并复制文本,但我仍然可以从函数中插入文本Text
或相似?
答案 0 :(得分:15)
您是否尝试过简单地禁用文本小部件?
text_widget.configure(state="disabled")
在某些平台上,您还需要在<1>
上添加绑定以将焦点放在窗口小部件上,否则不会显示复制的突出显示:
text_widget.bind("<1>", lambda event: text_widget.focus_set())
如果禁用小部件,要以编程方式插入,只需
NORMAL
DISABLED
只要您不在中间调用update
,用户就无法以交互方式输入任何内容。
答案 1 :(得分:4)
抱歉,我迟到了,但我发现此页面正在寻找与您相同的解决方案。
我发现如果你默认“禁用”文本小部件,然后在函数开头“正常”它给它输入并在函数结束时再次“禁用”它。
def __init__():
self.output_box = Text(fourth_frame, width=160, height=25, background="black", foreground="white")
self.output_box.configure(state="disabled")
def somefunction():
self.output_box.configure(state="normal")
(some function goes here)
self.output_box.configure(state="disable")
答案 2 :(得分:0)
我偶然发现了state =“normal”/ state =“disabled”解决方案,但是你无法从中选择和复制文本。最后,我找到了以下解决方案:Is there a way to make the Tkinter text widget read only?,此解决方案允许您选择和复制文本以及跟踪超链接。
import Tkinter
root = Tkinter.Tk()
readonly = Tkinter.Text(root)
readonly.bind("<Key>", lambda e: "break")