是否有可用于纯 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。但我很确定无论你走到哪里,你都必须自己写记者。