symbian-qemu-0.9.1-12/python-2.6.1/Demo/tkinter/matt/killing-window-w-wm.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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()