不确定背景是否相关,但我会将其包含在最终结果中
我正在从wxglade迁移,所以我从wxglade生成了一个XRC并在wxformbuilder中导入
我有一个网格,我在子类中添加一些功能,在wxformbuilder中它正确显示网格,子类专有也是正确的(mygrid.MyGrid)
但生成的代码当然不会导入mygrid,因此在运行它时会抛出:
NameError: global name 'mygrid' is not defined
这是一个错误还是我做错了什么?任何解决方法?
答案 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)