Home | History | Annotate | Download | only in matt
      1 from Tkinter import *
      2 
      3 # This file shows how to trap the killing of a window
      4 # when the user uses window manager menus (typ. upper left hand corner
      5 # menu in the decoration border).
      6 
      7 
      8 ### ******* this isn't really called -- read the comments
      9 def my_delete_callback():
     10     print "whoops -- tried to delete me!"
     11 
     12 class Test(Frame):
     13     def deathHandler(self, event):
     14         print self, "is now getting nuked. performing some save here...."
     15 
     16     def createWidgets(self):
     17         # a hello button
     18         self.hi_there = Button(self, text='Hello')
     19         self.hi_there.pack(side=LEFT)
     20 
     21     def __init__(self, master=None):
     22         Frame.__init__(self, master)
     23         Pack.config(self)
     24         self.createWidgets()
     25 
     26         ###
     27         ###  PREVENT WM kills from happening
     28         ###
     29 
     30         # the docs would have you do this:
     31 
     32 #       self.master.protocol("WM_DELETE_WINDOW", my_delete_callback)
     33 
     34         # unfortunately, some window managers will not send this request to a window.
     35         # the "protocol" function seems incapable of trapping these "aggressive" window kills.
     36         # this line of code catches everything, tho. The window is deleted, but you have a chance
     37         # of cleaning up first.
     38         self.bind_all("<Destroy>", self.deathHandler)
     39 
     40 
     41 test = Test()
     42 test.mainloop()
     43