python - 如何在代码运行后立即执行按钮命令?
问题描述
我试图从另一个名为 validate.py 的文件中获取一个按钮来执行一个函数,当它被按下时,但该函数似乎在我运行代码后立即执行,而不是当我实际按下它时?
按钮代码:
id_validate = ttk.Button(id_frame, text='Validate',
command=validate.validate(pack_id.get()))
这是函数的代码:
def validate(pack_id):
print('vAliDAte')
return True
我希望每次单击按钮并在控制台中打印“验证”时执行该功能,但它只会在我运行代码时执行一次,并且在按下按钮时不响应。
如何在代码运行时阻止它执行并且仅在按下按钮时执行?
解决方案
该函数执行是因为您调用它;以括号结束函数名。
命令属性只需要函数的名称。
但是,您可以使用 lambda 解决此问题:
command=lambda: validate(pack_id.get())
关于在函数中使用名称 pack_id 的警告:在使用参数调用函数时,您已经在全局范围内使用了该名称pack_id.get()
。这可能会导致问题。
推荐阅读
- javascript - 如何使一小部分div可点击
- ios - 带 AuGraph 的变速单元 [iOS Swift]
- swift - SwiftUI - 使用自定义绘图包装 UIView 时出现 UIViewRepresentable 故障
- html - 我试过调用我的 CSS 动画,但它不起作用
- c# - 添加 System.Drawing.Common 引用
- django - django 3 - 如何将文章模型外键设置为登录用户 ID?
- titanium - 使用 node-gyp 的 Titanium 应用程序编译错误
- abap - 在 AT SELECTION-SCREEN 中设置依赖列表框的值
- python - instagram basic display api Exchange Code for Token 返回 400 OAuthException Invalid platform app
- angular - Angular中数据的异步操作