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

Python 如何禁用文本小部件的输入,但允许编程输入?,python,textbox,tkinter,python-2.7,Python,Textbox,Tkinter,Python 2.7,我如何锁定文本小部件,以便用户只能从中选择和复制文本,但我仍然能够从函数或类似功能将文本插入文本。您是否尝试过简单地禁用文本小部件 text_widget.configure(state="disabled") 在某些平台上,您还需要在上添加一个绑定,以便将焦点放在小部件上,否则不会显示复制的突出显示: text_widget.bind("<1>", lambda event: text_widget.focus_set()) text\u widget.bind(“,lambd

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

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

text_widget.configure(state="disabled")
在某些平台上,您还需要在
上添加一个绑定,以便将焦点放在小部件上,否则不会显示复制的突出显示:

text_widget.bind("<1>", lambda event: text_widget.focus_set())
text\u widget.bind(“,lambda事件:text\u widget.focus\u set())
如果您禁用该小部件,要以编程方式插入,只需

  • 将小部件的状态更改为
    NORMAL
  • 插入文本,然后单击
  • 将状态更改回禁用状态

  • 只要你不调用<代码> Update <代码>,那么用户就无法交互地输入任何东西。

    < P>对不起,我迟到了,但是我发现这个页面和你一样寻找解决方案。

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

    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")
    
    我也偶然发现了state=“normal”/state=“disabled”解决方案,但是您无法从中选择和复制文本。最后,我从以下位置找到了解决方案:,该解决方案允许您选择和复制文本以及跟踪超链接

    import Tkinter
    
    root = Tkinter.Tk() 
    readonly = Tkinter.Text(root)
    readonly.bind("<Key>", lambda e: "break")
    
    导入Tkinter
    root=Tkinter.Tk()
    readonly=Tkinter.Text(根)
    readonly.bind(“,lambda e:“break”)
    
    是的,我有,但根据文档,dis允许输入任何东西,即使是从函数之类的地方。@Oak:当然可以。但要以编程方式插入,只需将状态设置为“正常”,插入文本,然后将状态重置为“禁用”。我已经更新了我的答案以包含这些信息。唉,我现在觉得自己很愚蠢>>哈哈,谢谢!当我被允许接受XD时,你会得到你的分数。这个答案帮助我在向文本小部件写入标准输出时锁定了文本小部件。我不知道,但是,尽管我可以选择文本,但我似乎无法从中复制。