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

新手上路,请多包涵

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

原文由 IT Ninja 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 427
2 个回答

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

 text_widget.configure(state="disabled")

在某些平台上,您还需要在 <1> 上添加绑定以将焦点赋予小部件,否则不会出现复制高亮:

 text_widget.bind("<1>", lambda event: text_widget.focus_set())

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

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

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

原文由 Bryan Oakley 发布,翻译遵循 CC BY-SA 3.0 许可协议

抱歉,我参加聚会迟到了,但我发现此页面正在寻找与您相同的解决方案。

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

 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")

原文由 Andrew 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题