为什么在创建按钮命令时立即执行?
在 Tkinter 中,将命令分配给按钮可能会导致意外行为,其中该命令创建按钮后立即执行,而不是单击按钮时执行。这是因为命令选项的工作方式。
当您将命令参数指定为 Button(... command=button('hey')) 时,您实际上传递的是调用 button('嘿')到命令选项。这意味着按钮函数会立即执行,并将返回值分配给命令参数。
解决方案:传递对函数的引用
要避免这种情况问题,您需要传递对该函数的引用,而不是立即执行它。这可以使用 lambda 函数、functools.partial 或中间函数来完成。
使用 Lambda 函数
Lambda 函数提供了一种创建匿名函数的简单方法,该函数可以可以作为参考。例如:
b = Button(... command=lambda: button('hey'))
此 lambda 函数创建一个无名函数,调用时会使用参数“hey”执行按钮函数。然后可以将此引用传递给按钮的命令参数。
替代方法
结论
通过传递对函数的引用而不是立即执行它,您可以确保按钮命令仅在按预期单击按钮。
以上是为什么我的 Tkinter 按钮立即执行命令而不是单击时执行命令?的详细内容。更多信息请关注PHP中文网其他相关文章!