2011-02-24 75 views
-1

我正在制作一个程序,用于导入一个类(它继承自Tkinter Frame小部件)的自定义小部件。这一切都很好,直到我有约束力。为了减少混淆,我们将调用主应用程序应用程序,它是从lib导入小部件的模块,并且将导入到应用程序中的小部件称为cwid。需要Python中的类的帮助

基本上我需要以某种方式在app中引用一个函数,以便它可以绑定到lib中的我的小部件。

功能我想CWID内的部件结合是element_click(功能element_click在app):

lambda event: element_click(event, elementinfo[3]) 

所以结合会是这个样子的LIB(元素是一个CWID内画布组件)

element.bind('<ButtonRelease-1>', lambda event: element_click(event, elementinfo[3])) 

上述线不会然而工作看到,因为element_click是在应用程序。所以我尝试了一种似乎并不奏效的工作。

import app 

loc = app.EOG 

element.bind('<ButtonRelease-1>', lambda event: loc.element_click(event, elementinfo[3])) 

当我尝试了上面我得到以下错误:

TypeError: unbound method element_click() must be called with EOG instance as first argument (got Event instance instead) 

EOG是应用一个类,其中包含element_click。

此外,所有上述代码位都是片段。

编辑:

试图LOC-app.EOG(),并转到以下错误:

AttributeError: EOG instance has no attribute '__nonzero__' 

回答

2

我觉得你只是想:

loc = app.EOG() 

然后,loc是EOG的实例,并且loc.element_click是一种绑定方法,因此它按预期工作。

+0

谢谢,仍然有点麻烦。请参阅编辑: – rectangletangle 2011-02-24 02:14:35

+0

在哪一行上?我认为你需要更多的上下文。作为背景,['__nonzero__'](http://docs.python.org/reference/datamodel.html#object.__nonzero__)是一种用于将对象转换为布尔值的特殊方法。 – 2011-02-24 02:20:28

+0

对不起,在我的代码中发现了错误。无论如何,感谢您的帮助。 – rectangletangle 2011-02-24 02:35:14