Capture close window button in Tkinter

William Gill noreply at gcgroup.net
Sun Jun 12 14:17:05 EDT 2005


Jonathan Ellis wrote:
> William Gill wrote:
> 
>>I am trying to make a simple data editor in Tkinter where each data
>>element has a corresponding Entry widget.   I have tried to use the
>>FocusIn/FocusOut events to set a 'hasChanged' flag  (if a record has not
>>changed, the db doesn't need updating).  This seems to work fine except
>>that when the user finishes and clicks a 'done' button or the close
>>window button (in the root widget) no FocusOut event is triggered.  I
>>can trigger a FocusOut event if the 'done' button opens another window
>>(i.e. a messagebox) that takes focus.  Enter and Leave follow the mouse,
>>but don't trigger when the user tabs between fields.
>>
>>Is there a better way to monitor 'hasChanged'?
> 
> 
> I'd go with monitoring keypresses in the Entry widget.

Well, It doesn't seem logical to do a before and after test of the Entry 
values after each keypress, but I suppose I could monitor keypresses, 
test event.key for Tab (in case the user tabbed out of the widget w/o 
making any changes.

Is that along the lines of what you are suggesting?

> 
> 
>>Also, how do I capture
>>the root window close button?
> 
> 
>     root = Tk()
>     root.protocol("WM_DELETE_WINDOW", onexit)
I had seen something like this somewhere, but couldn't remember where. 
Thanks to your reminder I found an example of "Capturing destroy 
events."  Since that will allow me to route the exit process through a 
tkMessageBox, it may be just as good to continue using FocusIn/FocusOut 
events.









More information about the Python-list mailing list