純粋な Python Tkinter アプリケーションに使用できるクラッシュ レポートフレームワークはありますか? 理想的には、クロスプラットフォームで動作する必要があります。
実際には、Python インタープリター自体はほとんどクラッシュしないため、これは「例外報告」に近いものです。
クラッシュ レポーターの例を次に示します。

純粋な Python Tkinter アプリケーションに使用できるクラッシュ レポートフレームワークはありますか? 理想的には、クロスプラットフォームで動作する必要があります。
実際には、Python インタープリター自体はほとんどクラッシュしないため、これは「例外報告」に近いものです。
クラッシュ レポーターの例を次に示します。

try..exceptどこでもコードを汚染するのではなく、独自の except フックを設定して実装する必要がありますsys.excepthook。次に例を示します。
import sys
import traceback
def install_excepthook():
def my_excepthook(exctype, value, tb):
s = ''.join(traceback.format_exception(exctype, value, tb))
dialog = ErrorReportDialog(None, s)
dialog.exec_()
sys.excepthook = my_excepthook
install_exception()アプリケーションの起動時に呼び出します。
ErrorReportDialog私が作ったQtダイアログです。traceback.format_exception()Python のインタプリタと同じ方法で、except フックに渡される引数をフォーマットします。
編集:私はそれに少し落とし穴を言及するのを忘れていました. スレッドでは機能しません (少なくとも、前回チェックしたときは機能しませんでした)。別のスレッドで実行されるコードについては、try..exceptブロックでラップする必要があります。
アプリケーションがクラッシュする可能性がある場所 (I/O、ネットワークなど) を除いて、試してみてください。except が呼び出されるたびに、古いウィンドウを強制終了する関数、新しい tkinter 通知ウィンドウを生成する関数、またはエラー メッセージを含むカスタムウィンドウを呼び出す関数を呼び出します。
新しいウィンドウで root.after を実行し、エラー レポート (urllib) を送信します。
必要に応じて再起動ボタンを配置します。
tkinter はそのタイプの GUI ではないため、クラッシュ レポート フレームワークはありません。これは、単純なコマンド ライン アプリのほとんどのラッパーです。
上のスクリーンショットに見られる機能が必要な場合は、pyqt/gtk または wxpython に移動します。しかし、どこへ行っても、自分のレポーターを書かなければならないことは確かです。