在 Tkinter 上的 Entry 小部件中输入文本时启用按钮
Make the button enabled when text is entered in Entry widget on Tkinter
因此,当使用 tkinter 在条目小部件中输入文本时,我尝试启用该按钮,但是我没有想到它可以工作。
我的代码是:
def capture():
if e.get():
button['state'] = 'normal'
e = Entry(root, font = 20,borderwidth=5,command = capture)
e.pack()
不过我知道 Entry 小部件没有名为 command 的参数。
实现此目的的方法之一是使用 StringVar
:
def capture(*args):
if e.get():
button['state'] = 'normal'
else:
button['state'] = 'disabled'
var = StringVar()
e = Entry(root, font = 20,borderwidth=5,textvariable=var)
e.pack()
var.trace('w',capture)
trace()
将在每次更改 var
的值时调用提供的回调。
第二种方法是使用bind
:
def capture():
if e.get():
button['state'] = 'normal'
else:
button['state'] = 'disabled'
e = Entry(root, font = 20,borderwidth=5)
e.pack()
e.bind('<KeyRelease>',lambda e: capture()) # Bind keyrelease to the function
使用 bind
,每次释放键时都会调用函数,无论键是什么。这可能会好一点,因为您创建 StringVar
并不是为了使用它的 trace
.
因此,当使用 tkinter 在条目小部件中输入文本时,我尝试启用该按钮,但是我没有想到它可以工作。 我的代码是:
def capture():
if e.get():
button['state'] = 'normal'
e = Entry(root, font = 20,borderwidth=5,command = capture)
e.pack()
不过我知道 Entry 小部件没有名为 command 的参数。
实现此目的的方法之一是使用 StringVar
:
def capture(*args):
if e.get():
button['state'] = 'normal'
else:
button['state'] = 'disabled'
var = StringVar()
e = Entry(root, font = 20,borderwidth=5,textvariable=var)
e.pack()
var.trace('w',capture)
trace()
将在每次更改 var
的值时调用提供的回调。
第二种方法是使用bind
:
def capture():
if e.get():
button['state'] = 'normal'
else:
button['state'] = 'disabled'
e = Entry(root, font = 20,borderwidth=5)
e.pack()
e.bind('<KeyRelease>',lambda e: capture()) # Bind keyrelease to the function
使用 bind
,每次释放键时都会调用函数,无论键是什么。这可能会好一点,因为您创建 StringVar
并不是为了使用它的 trace
.