How to bind a click event to a Canvas in Tkinter? [closed]
Taken straight from an example from an Effbot tutorial on events.
In this example, we use the bind method of the frame widget to bind a callback function to an event called . Run this program and click in the window that appears. Each time you click, a message like “clicked at 44 63” is printed to the console window. Keyboard events are sent to the widget that currently owns the keyboard focus. You can use the focus_set method to move focus to a widget:
from Tkinter import *root = Tk()def key(event): print "pressed", repr(event.char)def callback(event): print "clicked at", event.x, event.ycanvas= Canvas(root, width=100, height=100)canvas.bind("<Key>", key)canvas.bind("<Button-1>", callback)canvas.pack()root.mainloop()
Update: The example above will not work for 'key' events if the window/frame contains a widget like a Tkinter.Entry widget that has keyboard focus. Putting:
canvas.focus_set()
in the 'callback' function would give the canvas widget keyboard focus and would cause subsequent keyboard events to invoke the 'key' function (until some other widget takes keyboard focus).