Python Tkinter Canvas fail to bind keyboard
python, tkinter
Solution
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())
Problem
I've been running a small script like this ``` from Tkinter import * root = Tk() def callback(event): print "callback" w = Canvas(root, width=300, height=300) w.bind("<Key>", callback) w.pack() root.mainloop() ``` However, the keyboard event is not handled in my situation (I use python 2.7 on window 7) If I use ``` w.bind("<Button-1>", callback) ``` Things work fine. So, this really puzzles me. Please anyone tell me why this's happening, thanks in advance.