我们应该在实验室中使用函数,然后使用函数闭包。对于函子,我们从functools中导入了partial作为命令,其中的设置最终看起来像:
digit = command(self.add_character, text = number)
label.bind('< Button-1 >', digit)
然后我们将稍后开发的方法绑定到标签上。。。对于函数闭包而不是函子,我该如何做这样的事情?
您可以使用lambda来绑定匿名函数:
label.bind('< Button-1 >', lambda ev: self.add_character(ev, text=number))
在这里,我假设标签回调通常是在事件参数中传递的。您可能需要调整回调传递的参数数量。如果这是一个基于tkinter
的GUI,那么只会传入事件
number
值是封闭的,而当使用functools.partial()
对象时,number
值将作为参数绑定到可调用对象。