1

不确定背景是否相关,但我会将其包含在不测中

我要从 wxglade 搬来,所以我从 wxglade 生成了一个 XRC 并在 wxformbuilder 中导入

我有一个网格,我将其子类化以添加一些功能,在 wxformbuilder 中它正确显示了网格,并且子类的属性也是正确的(mygrid.MyGrid)

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

NameError: global name 'mygrid' is not defined

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

4

2 回答 2

2

您的解决方法帮助了我几个月。

直到今天,当我终于忽略了仅针对 C++header的字段帮助时,并在其中指出了我的子类所在的模块名称。现在,生成的类正确地导入了我的子类定义。

该字段位于 wxFormBuilder GUI 中header字段的正下方。subclass如果您希望手动编辑 wxFormBuilder 项目,请替换<property name="subclass">mygrid; </property><property name="subclass">mygrid; mygrid</property>. 重新生成后,您将from mygrid import mygrid在 gui.py 中有一行。

于 2013-08-01T09:01:28.837 回答
1

好的,找到了一个看起来可行的丑陋解决方法

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

import mygrid
import gui
import sys
setattr(sys.modules["gui"], "mygrid", mygrid)
于 2011-12-22T02:05:28.023 回答