我有一个用 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 docs说 wxAppConsole::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/