2014年10月9日 星期四

啟動 Boa Constructor 時出現「AttributeError: 'module' object has no attribute 'NO_3D'」錯誤的解決方案

無法順利啟動 Boa Constructor 除了是 Python 、wxPython 和 Boa Constructor 這三者的版本匹配有問題之外,另外一個問題就是會出現「AttributeError: 'module' object has no attribute 'NO_3D'」這樣的錯誤訊息,這個應該是 Boa Constructor 本身的 Bug,原因是它無法對 wx.NO_3D 這個變數做解析。

解決的方法是到 Boa Constructor 資料夾內逐一對每一個 .py 程式檔找出有 wx.NO_3D 的文字將它用 wx.DEFAULT_FRAME_STYLE 來置換掉。

可能有wx.NO_3D 文字的程式如下:

boa.py
Preferences.py
prefs.rc.py


要注意的是千萬別使用編輯器(不管您使用的是何種編輯器)的置換功能,因為 Boa Constructor 的眾多程式當中有些程式碼使用到字典,例如:

style = {'wx.NO_3D': wx.NO_3D, ....}

此時你應該把值置換掉即可,如下:

style = {'wx.NO_3D': wx.DEFAULT_FRAME_STYLE, ....}


我的方法

我是使用 pyScripter 編輯器打開 Boa.py 然後執行它,在執行的過程當中若有出現錯誤,pyScripter 會將有問題的程式檔案開啟並標註錯誤的位置,此時就可以很容易找到 wx.NO_3D 的位置,於是您就可以用 wx.DEFAULT_FRAME_STYLE 置換它。