这是奇怪的事情: 比如说,你在一个类中有一个tk.Button(RUN),你可以指定一个像
这样的回调self.RUN["command"] = self.run
这是指类中的一个函数,它可以访问所有成员。 实质上,回调会看到一个类实例。
您还可以创建一个tk.ListBox。获得选择的机制涉及事件。 您不能像上面那样传递一个类实例的函数。 回调只能看到Tk中的不透明事件/小部件。
你可以做到
def CurSelect(evt) :
...
lb.bind('<<ListboxSelect>>',CurSelect)
但是没有办法传递超过事件。
那么,当你在mainloop中运行多个ListBox时,会发生什么? 如何将事件/窗口小部件映射到拥有事件/窗口小部件的类实例?
当然,你可以制作一些全球地图。 (丑,试过,我讨厌它。) 还有什么更好的吗?
答案 0 :(得分:4)
您可以尝试使用lambda传递参数。
arguments = []
widget.bind("<>", lambda event, arg=arguments: cur_select(event, arg))
def cur_select(event, arg):
return
另外,Python函数的命名约定:小写,必要时用下划线分隔,以提高可读性。