2011-02-24 53 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