2014-02-09 21 views
1

这里是奇怪的事情: 说,你有一个tk.Button(RUN)一类中,你可以指定一个像蟒蛇Tkinter的列表框回调:通过一个类实例特定回调

self.RUN["command"] = self.run 
回调

这是指类中的一个函数,它可以访问所有成员。实质上,回调看到一个类实例。

你也可以创建一个tk.ListBox。获得选择的机制涉及事件。 你不能像上面那样传递一个类实例。 回调只能看到Tk中的不透明事件/小部件。

你可以做

def CurSelect(evt) : 
    ... 
lb.bind('<<ListboxSelect>>',CurSelect) 

但没有办法通过比事件的更多。

因此,当您在主循环中运行多个ListBox时会发生什么? 如何将事件/小部件映射到拥有事件/小部件的类实例?

当然,你可以制作一些全球地图。 (丑,尝试,我讨厌它。) 有什么更好的吗?

+0

请在问题中包含更多实际代码以获得具体答案。 – martineau

回答

4

您可以尝试使用lambda来传递参数。

arguments = [] 
widget.bind("<>", lambda event, arg=arguments: cur_select(event, arg)) 

def cur_select(event, arg): 
    return 

此外,Python函数的命名约定:小写字母与下划线之间用下划线分隔以提高可读性。

+0

非常感谢!是的,它的工作原理。其实,我想出了自己。 (我是Python新手,事情并不自然。) – user3288731