不确定背景是否相关,但我会在可能的情况下将其包括在内
我从wxglade迁移过来,所以我从wxglade生成了一个XRC并导入到wxformbuilder中
我有一个网格,我的子类添加了一些功能,在wxformbuilder中它正确地显示了网格,子类的属性也是正确的(mygrid.MyGrid)
但是生成的代码当然不会像它应该的那样导入mygrid,所以当运行它时,它会抛出:
NameError: global name 'mygrid' is not defined这是一个bug,还是我做错了什么?有什么解决方法吗?
发布于 2011-12-22 10:05:28
好的,我找到了一个看起来不错的解决方法
基本上,我手动添加对模块全局字典的引用:
在本例中,代码在文件gui.py中生成,我的类在文件mygrid.py中
import mygrid
import gui
import sys
setattr(sys.modules["gui"], "mygrid", mygrid)发布于 2013-08-01 17:01:29
你的变通方法帮了我几个月。
直到今天,我终于忽略了header字段help,该字段显示for C++ only,并在其中指明了我的子类所在的模块名称。现在,生成的类正确地导入了我的子类定义。
header字段位于wxFormBuilder图形用户界面中subclass字段的正下方。如果您更愿意手动编辑wxFormBuilder项目,请将<property name="subclass">mygrid; </property>替换为<property name="subclass">mygrid; mygrid</property>。在重新生成之后,您将在gui.py中拥有一条from mygrid import mygrid行。
https://stackoverflow.com/questions/8598433
复制相似问题