Python Tkinter Canvas fail to bind keyboard

Key bindings only fire when the widget with the keyboard focus gets a key event. The canvas by default does not get keyboard focus. You can give it focus with the focus_set method. Typically you would do this in a binding on the mouse button.

Add the following binding to your code, then click in the canvas and your key bindings will start to work:

w.bind("<1>", lambda event: w.focus_set())

Leave a Comment