假设我有以下 Button
用 Python 中的 Tkinter 制作:
import Tkinter as Tk
win = Tk.Toplevel()
frame = Tk.Frame(master=win).grid(row=1, column=1)
button = Tk.Button(master=frame, text='press', command=action)
方法 action
在我按下按钮时被调用,但是如果我想将一些参数传递给方法 action
怎么办?
我尝试过使用以下代码:
button = Tk.Button(master=frame, text='press', command=action(someNumber))
这只是立即调用该方法,按下按钮什么也不做。
如果您尝试在循环中创建多个按钮,并根据循环计数器传递每个不同的参数,您可能会遇到所谓的 后期绑定 问题。有关详细信息,请参阅 tkinter 在 for 循环传递命令参数中创建按钮。
原文由 Jack 发布,翻译遵循 CC BY-SA 4.0 许可协议
我个人更喜欢在这种情况下使用
lambdas
,因为 imo 它更清晰、更简单,如果您无法控制被调用的方法,也不会强迫您编写大量包装器方法,但仅此而已当然是口味问题。这就是你使用 lambda 的方式(注意在功能模块中也有一些柯里化的实现,所以你也可以使用它):