tkinter - 当用户开始在输入字段内输入时,如何使禁用状态为“正常”?

时间:2018-02-26 12:43:20

标签: python python-3.x tkinter

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

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字段中传递函数as命令,如下所示:

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

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

1 个答案:

答案 0 :(得分:2)

您可以将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()