To interact with objects contained in a Canvas
object you need to use tag_bind()
which has this format: tag_bind(item, event=None, callback=None, add=None)
The item parameter can be either a tag or an id.
Here is an example to illustrate the concept:
from tkinter import *
def onObjectClick(event):
print('Got object click', event.x, event.y)
print(event.widget.find_closest(event.x, event.y))
root = Tk()
canv = Canvas(root, width=100, height=100)
obj1Id = canv.create_line(0, 30, 100, 30, width=5, tags="obj1Tag")
obj2Id = canv.create_text(50, 70, text='Click', tags='obj2Tag')
canv.tag_bind(obj1Id, '<ButtonPress-1>', onObjectClick)
canv.tag_bind('obj2Tag', '<ButtonPress-1>', onObjectClick)
print('obj1Id: ', obj1Id)
print('obj2Id: ', obj2Id)
canv.pack()
root.mainloop()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…