Tkinter Events

So far, we’ve seen only one kind of event handling: callbacks performed on callables set with the command= option of buttons and menu entries. Tkinter also lets you set callables to handle a variety of events. Tkinter does not let you create custom events: you are limited to working with events predefined by Tkinter itself.

The Event Object

General event callbacks must accept one argument event that is a Tkinter event object. Such an event object has several attributes that describe the event:

char

A single-character string that is the key’s code (only for keyboard events)

keysym

A string that is the key’s symbolic name (only for keyboard events)

num

Button number (only for mouse-button events); 1 and up

x, y

Mouse position, in pixels, relative to the upper-left corner of the widget

x_root y_root

Mouse position, in pixels, relative to the upper-left corner of the screen

widget

The widget in which the event has occurred

Binding Callbacks to Events

To bind a callback to an event in a widget w, call w.bind and describe the event with a string, usually enclosed in angle brackets ('<...>'). The following example prints 'Hello World' each time the user presses the Enter key:

from Tkinter import *

root = Tk( )
def greet(*ignore): print 'Hello World'
root.bind('<Return>', greet)
root.mainloop( )

Method tag_bind of classes Canvas and Text (covered in tag_bind in Tags and tag_bind in Canvas Methods on Items) binds event callbacks to sets of items of a Canvas instance, or ranges within a Text ...

Get Python in a Nutshell, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.