How to bind events to Canvas items?

前端 未结 1 393
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-01 06:15

If I\'m using a canvas to display data and I want the user to be able to click on various items on the canvas in order to get more information or interact with it in some w

相关标签:
1条回答
  • 2020-12-01 06:55

    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()
    
    0 讨论(0)
提交回复
热议问题