首页 > 解决方案 > 如何在代码运行后立即执行按钮命令?

问题描述

我试图从另一个名为 validate.py 的文件中获取一个按钮来执行一个函数,当它被按下时,但该函数似乎在我运行代码后立即执行,而不是当我实际按下它时?

按钮代码:

id_validate = ttk.Button(id_frame, text='Validate', 
command=validate.validate(pack_id.get()))

这是函数的代码:

def validate(pack_id):
    print('vAliDAte')
    return True

我希望每次单击按钮并在控制台中打印“验证”时执行该功能,但它只会在我运行代码时执行一次,并且在按下按钮时不响应。

如何在代码运行时阻止它执行并且仅在按下按钮时执行?

标签: pythonfunctionbuttontkinter

解决方案


该函数执行是因为您调用它;以括号结束函数名。

命令属性只需要函数的名称。

但是,您可以使用 lambda 解决此问题:

command=lambda: validate(pack_id.get())

关于在函数中使用名称 pack_id 的警告:在使用参数调用函数时,您已经在全局范围内使用了该名称pack_id.get()。这可能会导致问题。


推荐阅读