Tkinter
Examples

Window Events

There are a few events that occur at the window level - namely moving, resizing and closing.


Window Moving & Resizing

We can create a handler for when the window is moved and resized by binding to the <Configure> event.

import tkinter

root = tkinter.Tk()

def configure_handler(event):
    print(event)

root.bind("<Configure>", configure_handler)

root.mainloop()

Now every time we move the window we get output with the new location information for our window:

<Configure event x=136 y=53 width=404 height=295>
<Configure event x=136 y=53 width=456 height=310>
...

Note that widgets can also bind to the <Configure> event to get information about when their size and shape changes.


Window Closing

The application window closing is not an Event proper but rather a Protocol. This is an event-adjacent concept which uses slightly different syntax. We can bind to it using root.protocol("WM_DELETE_WINDOW", window_close_handler). Note that protocols are intercepted (not propagated) so we must be sure to destroy the object manually to ensure our window works as expected. We can use this protocol to prompt the user to confirmt they want to exit. This can be used in case the user has unsaved work or something similar.

import tkinter
from tkinter import messagebox

root = tkinter.Tk()

def window_exit():
    close = messagebox.askyesno("Exit?", "Are you sure you want to exit?")
    if close:
        root.destroy()

root.protocol("WM_DELETE_WINDOW", window_exit)

root.mainloop()