tkinter python:捕获异常

时间:2011-07-12 15:35:25

标签: python error-handling tkinter

开始在python中编程我觉得在家里有错误报告。现在我正在使用Tkinter进行编程,我发现经常发生我的程序中存在错误,即使它们生成异常我也没注意到:我抓住它们(有时)因为我去调试Step by步骤(我使用wingIDE)和例如在给定的行我看到报告的异常。但令我恼火的是程序没有停止,但即使在try / error中的块中也会发生这种情况。

如果我说的话有意义,你知道一些至少显示错误的整体方法吗?在Tkinter中,我可以创建一个错误窗口,并在发生任何异常时填充它。

3 个答案:

答案 0 :(得分:8)

查看How can I make silent exceptions louder in tkinter的答案,其中显示了如何将回调挂钩到tkinter.Tk.report_callback_exception

答案 1 :(得分:5)

正如@ jochen-ritzel所说(Should I make silent exceptions louder in tkinter?),你可以覆盖tk.TK.report_callback_exception()

import traceback
import tkMessageBox

# You would normally put that on the App class
def show_error(self, *args):
    err = traceback.format_exception(*args)
    tkMessageBox.showerror('Exception',err)
# but this works too
tk.Tk.report_callback_exception = show_error

答案 2 :(得分:0)

我更喜欢显式扩展Tk的Toplevel小部件,该小部件主要代表应用程序的主窗口,而不是注入hack:

S

恕我直言,它看起来像是正确的方法。