创建时执行按钮命令
在 Tkinter 中,当使用命令参数初始化 Button 实例时,关联的函数旨在单击按钮时执行。然而,在某些情况下,该命令可能会在按钮创建后立即执行,这与预期的行为相反。
代码示例分析
考虑以下代码:
from Tkinter import * admin = Tk() def button(an): print(an) print('het') b = Button(admin, text='as', command=button('hey')) b.pack() mainloop()
问题描述
何时您运行此代码,该按钮似乎无法正常工作。它不是在单击时执行按钮功能,而是在创建后立即打印“hey”和“het”。
说明
问题在于命令的方式参数正在初始化。该行:
command=button('hey')
将按钮('hey')函数调用的结果传递给命令参数。这相当于:
result = button('hey') command=result
由于button('hey')函数立即执行并返回结果,因此命令被设置为结果而不是函数引用本身。因此,该函数会立即执行,而不是在单击按钮时执行。
解决方案
要解决此问题,您必须传递对按钮的引用函数而不执行它。为此,只需在初始化命令参数时省略括号即可:
command=button
附加说明
以上是为什么我的 Tkinter 按钮在创建时而不是单击时执行命令?的详细内容。更多信息请关注PHP中文网其他相关文章!