Python と wxPython で記述された複雑な GUI アプリケーションがあります。
Windows Vista で認定されるようにしたいので、Windows エラー報告ダイアログ (「レポートを Microsoft に送信しますか?」というダイアログ) が表示されるような方法でクラッシュする必要があります。これは、「 Certified for Windows Vista Test Cases」ドキュメントのテストケース No 32 に関連しています。
残念ながら、ThreadHijacker
ツール wxPython でアプリをクラッシュさせると、次のようなメッセージが表示されます。
未処理の例外 --------------------------- 未処理の例外が発生しました。「中止」を押してプログラムを終了し、 プログラムを正常に終了するには「再試行」し、続行するには「無視」します。 --------------------------- 中止 再試行 無視
wxPython がこのメッセージを表示しないようにするにはどうすればよいですか? 私は custom を持っていますsys.excepthook
が、私の except フックが干渉する前にこのダイアログが表示されるようです。
編集:
wxWidgets docsによると、wxAppConsole::OnExceptionInMainLoopが呼び出され、MSW の下で、ユーザーがさまざまなオプションを選択できるようにするいくつかの派手なダイアログが表示されます。ただし、wxPython ではその関数のオーバーロードが許可されていないようです... wxPython でwxAppConsole::OnExceptionInMainLoopのデフォルトの動作を変更する方法を知っている人はいますか?
C/C++ に移行するソリューションよりも、Python レベルのソリューションを好みます
EDIT2:
全体として、wxPython メーリング リストで質問したところ、Robin Dunn は、wxPython の次のリリースでwxAppConsole::OnExceptionInMainLoop をオーバーライド可能にすることを検討すると答えました。待ちきれなかったので、その関数を含まない独自のバージョンの wxPython をコンパイルする必要がありました。wxAppConsole::OnExceptionInMainLoop関数の存在は、コンパイル フラグを適切に設定することで有効/無効にできることが判明しました 。