首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxformbuilder python生成的代码抛出NameError

wxformbuilder python生成的代码抛出NameError
EN

Stack Overflow用户
提问于 2011-12-22 09:25:07
回答 2查看 634关注 0票数 1

不确定背景是否相关,但我会在可能的情况下将其包括在内

我从wxglade迁移过来,所以我从wxglade生成了一个XRC并导入到wxformbuilder中

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

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

代码语言:javascript
复制
NameError: global name 'mygrid' is not defined

这是一个bug,还是我做错了什么?有什么解决方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-22 10:05:28

好的,我找到了一个看起来不错的解决方法

基本上,我手动添加对模块全局字典的引用:

在本例中,代码在文件gui.py中生成,我的类在文件mygrid.py中

代码语言:javascript
复制
import mygrid
import gui
import sys
setattr(sys.modules["gui"], "mygrid", mygrid)
票数 1
EN

Stack Overflow用户

发布于 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行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8598433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档