使用 wx 版本 3.0.3 导入 PyDeadObjectError

Import PyDeadObjectError with wx version 3.0.3

使用 wxPython 3.0.3 我无法导入 PyDeadObjectError。 我相信当我安装 3.0 时,这不是问题。 我收到 "cannot import name" 错误。

BsMBP:tests bem$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
>>> import wx
>>> wx.version()
'3.0.3.dev1836+f764b32 osx-cocoa (phoenix)'
>>> 
>>> import PyDeadObjectError
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PyDeadObjectError
>>> 
>>> from wx._core import PyDeadObjectError
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name PyDeadObjectError
>>> 
>>> exit()

我该如何解决这个错误?

如迁移指南中所述(位于 http://wxpython.org/Phoenix/docs/html/MigrationGuide.html#wx-pydeadobjecterror-runtimeerror)不再需要生成该异常的丑陋 hack,因此异常 class 已被删除。现在,如果您尝试访问已删除的 C++ 对象的代理对象,则会引发 RuntimeError。或者您可以在 if 语句中测试 window 如果您预计它可能已被删除并完全避免出现异常。