У меня есть сложное приложение с графическим интерфейсом, написанное на Python и wxPython.
Я хочу, чтобы он был сертифицирован для Windows Vista, поэтому он должен аварийно завершить работу, что вызывает диалоговое окно создания отчетов об ошибках Windows (которое выдает « Хотите отправить отчет в Microsoft? ») появляться. Это относится к контрольному примеру № 32 из документа " Certified for Windows Vista Test Cases ".
К сожалению, когда я ломаю свое приложение с помощью 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
, но кажется, что это диалоговое окно показывается до того, как может вмешаться мой исключающий хук.
РЕДАКТИРОВАТЬ:
wxWidgets docs говорит о том, что wxAppConsole :: OnExceptionInMainLoop вызывается, и в MSW он отображает некоторый модный диалог, который позволяет пользователю выбирать между различными параметрами. Однако кажется, что wxPython не позволяет перегрузить эту функцию ... Кто-нибудь знает, как изменить поведение по умолчанию wxAppConsole :: OnExceptionInMainLoop в wxPython?
Я предпочитаю решения на уровне Python, а не на C / C ++
EDIT2:
В общем, я спросил в списке рассылки wxPython, и Робин Данн ответил, что он попытается сделать wxAppConsole :: OnExceptionInMainLoop перезаписываемыми в следующих выпусках wxPython. Поскольку я не мог ждать, мне пришлось скомпилировать свою собственную версию wxPython, которая не включает эту функцию. Оказалось, что наличие функции wxAppConsole :: OnExceptionInMainLoop можно включить / отключить, если правильно установить флаги компиляции.