Python 中检测用鼠标单击的对象 ID 的最佳方法是什么?

问题描述

我想问一下 Python 中与使用函数创建的画布对象交互的最佳方式是什么。
我的示例代码

import tkinter
window = tkinter.Tk()
canvas = tkinter.Canvas(width=1000,height=600,bg="black")
canvas.pack()

def rectangle(x,y):
    canvas.create_rectangle(x,y,x + 5,y + 5,fill="white")

rect1 = rectangle(20,50)
rect2 = rectangle(180,30)
rect3 = rectangle(698,322)
rect4 = rectangle(900,66)
rect5 = rectangle(10,506)
rect6 = rectangle(208,455)

检测用鼠标单击的对象的 ID 然后将这些 ID 作为另一个函数中的参数的最佳方法是什么?谢谢你的回答。

解决方法

使用tag_bind

import tkinter
from functools import partial

window = tkinter.Tk()
canvas = tkinter.Canvas(width=1000,height=600,bg="black")
canvas.pack()

def on_click(item,event=None):
    print(f"Item id {item} was clicked!")

def rectangle(x,y):
    item_id = canvas.create_rectangle(x,y,x + 5,y + 5,fill="white")
    canvas.tag_bind(item_id,'<Button-1>',partial(on_click,item_id))

rect1 = rectangle(20,50)
rect2 = rectangle(180,30)
rect3 = rectangle(698,322)
rect4 = rectangle(900,66)
rect5 = rectangle(10,506)
rect6 = rectangle(208,455)

window.mainloop()