button1 = tkinter.Button(frame, text="Say hi", command=print)
button2 = tkinter.Button(frame, text="foo", command=print)
button3 = tkinter.Button(frame, text="bar", command=print)
你可能发现了我程序中的漏洞:print
不能指定参数。这使得整件事毫无用处,而且有缺陷。很明显,有
将在对象实际实例化时调用该函数,并使command
成为该函数调用的返回值(如果有)。(不是我想要的)
那么,如何在上述场景中指定参数,并避免为每个按钮定义单独的command
函数?在
一个简单的解决方案是使用lambda,它允许您创建匿名函数。在
另一个选择是使用functools.partial,在这个答案中有一点解释:https://stackoverflow.com/a/2297423/7432
如果您至少有Python2.6(我猜是这样的,因为您在函数位置使用print),那么可以使用
functools.partial
。它接受要提供的函数和任何参数,并返回一个可调用函数,该函数将调用基础函数并添加传递给最终调用的任何参数。例如:你的例子可以这样做
^{pr2}$如果没有2.6,则可以将部分实现为:
相关问题 更多 >
编程相关推荐