2011-12-22 7 views
1

不知道背景是相關的,但我會包括它的偶然性wxformbuilder蟒蛇生成的代碼拋出NameError

我從wxglade移動,所以我從wxglade產生的XRC和wxformbuilder

進口

我有子類添加一些功能的網格,在wxformbuilder它正確地顯示網格和子禮也是正確的(mygrid.MyGrid)

但當然生成的代碼不會導入mygrid因爲它應該,所以在運行時拋出:

NameError: global name 'mygrid' is not defined 

這是一個錯誤還是我做錯了什麼?任何解決方法?

回答

1

OK,找到了一個醜陋的解決方法,似乎工作

基本上我手動添加參考模塊全球百科:
的例子 代碼在文件gui.py生成和我的課是內文件mygrid.py

import mygrid 
import gui 
import sys 
setattr(sys.modules["gui"], "mygrid", mygrid) 
2

您的解決方法幫助了我幾個月。

直到今天,當我終於不顧header不恥下問,其中規定僅限於C++,並在那裏,我有我的子模塊名錶示。現在,生成的類正確地導入我的子類定義。

header字段正好在wxFormBuilder GUI中的subclass字段下面。如果您寧願手工編輯wxFormBuilder項目,請將<property name="subclass">mygrid; </property>替換爲<property name="subclass">mygrid; mygrid</property>。重新生成後,gui.py中將有一個from mygrid import mygrid行。