python - 在 Tkinter 的 Entry 小部件中输入文本时启用按钮
问题描述
因此,我试图在使用 tkinter 在条目小部件中输入文本时启用该按钮,但是我不认为它可以工作。我的代码是:
def capture():
if e.get():
button['state'] = 'normal'
e = Entry(root, font = 20,borderwidth=5,command = capture)
e.pack()
但是我知道 Entry 小部件没有称为命令的参数。
解决方案
实现这一目标的方法之一是使用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
.
推荐阅读
- html - 用于表单操作的 HTML 和 CSS 按钮
- amazon-web-services - 使用 Xray 的 lambda 中的“主动跟踪”是什么意思?
- azure - azure function app 和 app service plan 有什么不同?
- javascript - React:SortableJS:从排序中排除一些最后的元素
- amazon-web-services - 在单个云端域路径下提供多个 netlify 静态站点
- neo4j - Neo4j:我们如何将一个关系属性与另一个关系属性进行比较并相应地修改关系
- r - 安装新包不起作用,总是出错
- hibernate - Hibernate:如何在父实体中定义具有一个属性的复合键
- python - 如何在每个命令中存储我的数据(python)
- php - 已定义路由但显示 404 未找到