问题描述
我想问一下 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()