wxformbuilder python生成的代码抛出NameError

时间:2011-12-22 01:25:07

标签: python wxpython wxformbuilder

不确定背景是否相关,但我会将其包含在最终结果中

我正在从wxglade迁移,所以我从wxglade生成了一个XRC并在wxformbuilder中导入

我有一个网格,我在子类中添加一些功能,在wxformbuilder中它正确显示网格,子类专有也是正确的(mygrid.MyGrid)

但生成的代码当然不会导入mygrid,因此在运行它时会抛出:

NameError: global name 'mygrid' is not defined

这是一个错误还是我做错了什么?任何解决方法?

2 个答案:

答案 0 :(得分: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行。

答案 1 :(得分:1)

好吧,发现一个似乎有用的丑陋的解决方法

基本上我手动添加对模块全局字典的引用:
在示例中,代码在文件gui.py中生成,我的类在文件mygrid.py中生成

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