我有用 Python 和 wxPython 编写的复杂 GUI 应用程序。
我希望它通过 Windows Vista 认证,因此它必须以一种导致 Windows 错误报告对话框(询问“你想向 Microsoft 发送报告吗? ”)出现的方式崩溃。这与“ Certified for Windows Vista Test Cases ”文档中的第 32 号测试用例有关。
ThreadHijacker
不幸的是,当我使用工具 wxPython使我的应用程序崩溃时,会显示如下消息:
未处理的异常 -------------------------- 发生未处理的异常。按“中止”终止程序, “重试”正常退出程序,“忽略”尝试继续。 -------------------------- 中止 重试 忽略
如何防止 wxPython 显示此消息?我有 custom sys.excepthook
,但似乎在我的 except 钩子可以干扰之前显示了这个对话框。
编辑:
wxWidgets文档说wxAppConsole::OnExceptionInMainLoop被调用,并在 MSW 下显示一些精美的对话框,允许用户在不同的选项之间进行选择。然而,似乎 wxPython 不允许重载该函数......有谁知道如何在 wxPython 中更改wxAppConsole::OnExceptionInMainLoop的默认行为?
我更喜欢 Python 级别的解决方案,而不是 C/C++ 的解决方案
编辑2:
总而言之,我在 wxPython 邮件列表中询问过,Robin Dunn 回答说他会考虑在 wxPython 的下一个版本中使 wxAppConsole::OnExceptionInMainLoop成为可覆盖的。由于迫不及待,我不得不编译我自己的 wxPython 版本,它不包含该函数。事实证明, 可以通过正确设置编译标志来启用/禁用wxAppConsole::OnExceptionInMainLoop函数的存在。