Catching exceptions in Tkinter's mainloop

Mike Callahan mcalla at
Fri Mar 16 23:13:15 CET 2001

I want to make sure that if any exception pops up inside a mainloop, that
exception is printed to a log file and the mainloop quits. I tried to
simulate this with the following code but failed:

from Tkinter import *

class Gui:
    def __init__(self, master):
        self.master = master
        self.button = Button(master, text='Crash', command=self.crash)

    def crash(self):
        z = zz  # trigger exception

root = Tk()
app = Gui(root)
    print 'caught'

It doesn't work. The exception is printed out by standard traceback and the
mainloop continues. What am I doing wrong?

Mike Callahan

More information about the Python-list mailing list