python - 防止 wxPython 显示 'Unhandled exception' 对话框

标签 python windows wxpython error-reporting

我有一个用 Python 和 wxPython 编写的复杂 GUI 应用程序。

我希望它通过 Windows Vista 认证,因此它必须以导致 Windows 错误报告对话框的方式崩溃(询问“你想向 Microsoft 发送报告吗?”的对话框) ) 出现。这与“Windows Vista 测试用例认证”文档中的第 32 号测试用例相关。

不幸的是,当我使用 ThreadHijacker 工具 wxPython 使我的应用程序崩溃时,显示如下消息:

Unhandled exception
---------------------------
An unhandled exception occurred. Press "Abort" to terminate the program,
"Retry" to exit the program normally and "Ignore" to try to continue.
---------------------------
Abort   Retry   Ignore

如何防止 wxPython 显示此消息?我有自定义 sys.excepthook,但似乎这个对话框是在我的 except 钩子(Hook)干扰之前显示的。

编辑:

wxWidgets docswxAppConsole::OnExceptionInMainLoop 被调用,在 MSW 下它显示一些花哨的对话框,允许用户在不同的选项之间进行选择。然而,wxPython 似乎不允许重载该函数...有谁知道如何在 wxPython 中更改 wxAppConsole::OnExceptionInMainLoop 的默认行为?
与进入 C/C++ 的解决方案相比,我更喜欢 Python 级别的解决方案

编辑 2:

总而言之,我在 wxPython 邮件列表上询问过,Robin Dunn 回答说他将考虑在下一个 wxPython 版本中使 wxAppConsole::OnExceptionInMainLoop 可覆盖。因为我等不及了,所以我不得不编译我自己的不包含该函数的 wxPython 版本。事实证明,wxAppConsole::OnExceptionInMainLoop 函数的存在可以通过正确设置编译标志来启用/禁用。

最佳答案

这一切都以编译我自己的 wxWidgets 和 wxPython 结束,只更改了一个编译标志:wxUSE_EXCEPTIONS 应该设置为 0。

Robin Dunn 写道,他将尝试修补 wxPython,因此可以在不重新编译整个库的情况下修改此行为。

关于python - 防止 wxPython 显示 'Unhandled exception' 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/618429/

相关文章:

python - 进口订单编码标准

python - Redis 幂等地在键上设置 ttl

mysql - 为什么我的 MySQL 数据库在 Windows IIS 6 上崩溃并出现 VMWARE 错误 1784

python - Windows 气球小部件?

python 对象 AttributeError : type object 'Track' has no attribute 'title'

python - 如何确定 wxPython 事件处理程序中是否按下了 Shift 键?

python - 在调用不同文件的函数中有多少个单词以某个字符结尾?

windows - 我可以在单个 DLL header 中混合 C 和 C++ 导出吗?

java - 如何使用java在程序文件中移动文件?

python - Django 1.9.3 - 如何将 HTML 模板传递给索引模板