如何禁用Text小部件的输入但允许编程输入?

IT *_*nja 9 python textbox tkinter python-2.7

我如何锁定一个Text小部件,以便用户只能从中选择和复制文本,但我仍然能够Text从一个函数或类似的文本中插入文本?

Bry*_*ley 16

您是否尝试过简单地禁用文本小部件?

text_widget.configure(state="disabled")
Run Code Online (Sandbox Code Playgroud)

在某些平台上,您还需要添加绑定<1>以将焦点放在窗口小部件上,否则不会显示复制的突出显示:

text_widget.bind("<1>", lambda event: text_widget.focus_set())
Run Code Online (Sandbox Code Playgroud)

如果禁用小部件,要以编程方式插入,只需要

  1. 将窗口小部件的状态更改为 NORMAL
  2. 插入文本,然后
  3. 将状态更改回 DISABLED

只要您不在update中间调用,那么用户就无法以交互方式输入任何内容.


小智 7

抱歉,我迟到了,但我发现这个页面正在寻找与您相同的解决方案。

我发现,如果默认情况下“禁用”文本小部件,然后在提供输入的函数开始时“正常”它,并在函数结束时再次“禁用”它。

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")
Run Code Online (Sandbox Code Playgroud)