6

当我通过启动脚本“Boa.py”从命令行启动 boa-constructor 时,我收到消息说“

D:\Python27\Lib\site-packages\boa-constructor>python Boa.py
Starting Boa Constructor v0.6.1
importing wxPython
reading user preferences
Traceback (most recent call last):
File "Boa.py", line 271, in <module>
import Preferences, Utils
File "D:\Python27\Lib\site-packages\boa-constructor\Preferences.py", line 151
in <module>
execfile(file)
File "C:\Users\madfrog\.boa-constructor\prefs.rc.py", line 26, in <module>
splitterStyle = wx.SP_LIVE_UPDATE | wx.SP_3DSASH | wx.NO_3D
AttributeError: 'module' object has no attribute 'NO_3D'

我的 python 版本是 2.7.4,我下载了 wxPyton “32-bit Python 2.7”。有人说是因为wxPython版本不匹配,但是对我来说只有64位或者32位,不知道怎么处理这个问题。也许我应该重新安装python,哪个版本是2.6?

谢谢你的帮助。

4

4 回答 4

5

我有同样的问题。我不能告诉你为什么。我只能告诉你我是如何修复它的。

下载并解压缩 boa 文件后,进入 boa 文件夹(在 Mac 上,这可能是:/Users/your_user_name/Downloads/boa-constructor-0.6.1)。

然后:“grep”为每个包含 NO_3D 的文件(或使用任何你想在一组文件中搜索字符串,我不知道 windows 是如何做到的):在我的情况下,我做了:grep -ir NO_3D *

出现一个文件列表。只需编辑每个这样的文件(大约有 6 个)并删除“wx.NO_3D”的任何提及。

例如,在 Companions/BaseCompanions.py 中,我找到了一个匹配项:

"self.windowStyles = ['wx.CAPTION', 'wx.MINIMIZE_BOX', 'wx.MAXIMIZE_BOX',
        'wx.THICK_FRAME', 'wx.SIMPLE_BORDER', 'wx.DOUBLE_BORDER',
        'wx.SUNKEN_BORDER', 'wx.RAISED_BORDER', 'wx.STATIC_BORDER',.
        'wx.TRANSPARENT_WINDOW', 'wx.NO_3D', 'wx.TAB_TRAVERSAL',.
        'wx.WANTS_CHARS', 'wx.NO_FULL_REPAINT_ON_RESIZE', 'wx.VSCROLL',.
        'wx.HSCROLL', 'wx.CLIP_CHILDREN', 'wx.NO_BORDER', 'wx.ALWAYS_SHOW_SB']"

您会在中间某处看到“ wx.NO_3D ”。删除它并保存文件。继续对所有文件执行此操作。

但是,一个文件中有一个小问题:“Inspector.py”。在这里,您不能简单地删除 wx.NO_3D。具体来说,匹配是: self.categories = wx.SplitterWindow(self, -1, style=wx.NO_3D | wx.SP_3D | wx.SP_LIVE_UPDATE)

我所做的是将“style=wx.NO_3D”替换为“style=wx.DEFAULT_FRAME_STYLE”(我在其他文件之一中找到了这个默认名称;您会看到程序识别出不同的“样式”,所以我只是选择了 NO_3D 以外的其他样式)。

然后我只运行 Boa:“python Boa.py”

并且它起作用了(假设您安装了模块 wx 以及 Boa 首先运行所需的任何其他内容)。

于 2014-03-26T02:30:41.823 回答
2

Boa Constructor 是一个非常古老的项目,已经 7 年没有发布(或我能看到的任何提交)。很可能该代码是为更旧版本的 wxWindows/wxPython 编写的,并且 wx.NO_3D 常量在以后的 wx 版本中已被删除/重命名。您可以在项目邮件列表中看到它基本上已经死了(2013 年有 9 条消息)。可惜了,真的很好看。

看起来有人从 2012 年开始在 BitBucket 上创建了一个分支——这可能对你更有效。当然有一个专门针对 NO_3D 常量的提交。它可能只适用于 wxPython 2.8,但它似乎是一个更好的起点。

于 2014-01-23T10:51:44.473 回答
1

试试 WXPython 版本 wxPython2.8-win32-unicode-2.8.12.1-py27

于 2016-04-15T08:39:28.313 回答
1

我已经卸载了 wxPython 2.9.4.0,这给了我 AttributeError: 'module' object has no attribute 'NO_3D' 并且我已经安装了 wxPython2.8-win32-unicode-2.8.12.1-py27。Boa Constructor 无需任何更改即可工作!!!

于 2016-11-02T10:21:10.850 回答