【问题标题】:tkinter -How to enable a button state to 'normal' from disabled when user starts typing inside entry field?tkinter -当用户开始在输入字段中输入时,如何将按钮状态从禁用状态启用为“正常”?
【发布时间】:2018-08-05 22:14:43
【问题描述】:

我正在使用 tkinter 构建 GUI。我有两个字段,一个用于接受用户输入的条目字段,另一个是提交按钮。我的意图是当 GUI 调用提交按钮时应该处于禁用状态,我通过将按钮的状态设置为“禁用”来实现。

self.submit = ttk.Button(self, text='Submit', state = 'disabled')

因此,当用户开始在输入字段中输入时,提交按钮状态应更改为“正常”。写在函数下面:

def enable_responseButton(self):

        self.user_input.bind("<Key>",self.respond.config(state='normal',command = self.get_response))

并在 Entry 字段中将函数作为命令传递,如下所示:

self.input = ttk.Entry(self,state = "normal",command = self.enable_responseButton)

但是,当我运行我的脚本时,GUI 会打开,并且默认情况下会启用提交按钮状态,即使用户没有输入任何值也是如此。 有什么方法我需要等待用户输入,直到那时按钮将处于禁用状态?

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

    您可以使用Variable类对象与条目的文本同步,只要条目为空,按钮就会被禁用,在下面的示例中当不存在时启用:

    try:
        import tkinter as tk
    except ImportError:
        import Tkinter as tk
    
    
    def toggle_state(*_):
        if entry.var.get():
            button['state'] = 'normal'
        else:
            button['state'] = 'disabled'
    
    
    if __name__ == '__main__':
        root = tk.Tk()
        entry = tk.Entry(root)
        entry.var = tk.StringVar()
        entry['textvariable'] = entry.var
        entry.var.trace_add('write', toggle_state)
        button = tk.Button(root, text="Button", state='disabled')
        entry.pack()
        button.pack()
        tk.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多