我正在使用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也会打开,并且默认情况下启用“提交”按钮状态。 有什么方法我需要等待用户输入,然后按钮将处于禁用状态?
答案 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()