我以编程方式将tag_bindings添加到我的画布上具有标签"tag"的所有对象:
self.canvas.tag_bind("tag","<Button 2>",self.tag_highlight)
self.canvas
包含用户添加的所有对象(所有标记为"tag")。
然而,在tag_highlight
中,我只想对画布内的实际元素有一个处理。event.widget
似乎没有帮助,它只是一个4个浮动的元组,我不能链接到任何画布项目。我试过使用以下命令,但无济于事:
self.canvas.find_closest(event.x,event.y)
我想做的是有一个句柄:
t=self.canvas.getitem(event.widget)
以便我可以使用它,例如:
self.canvas.Move(t,30,20)
print self.canvas.coords(t)
等等。也许我只是忽略了显而易见的东西?
您可以使用标记"current",它指的是"current"对象。当前对象在tk官方文档中是这样描述的:
标签电流由Tk自动管理;它适用于当前项,它是其绘制区域覆盖控件的最上面的项鼠标光标的位置(不同的项目类型在不同的方法;有关详细信息,请参阅各个项目类型文档)。如果鼠标不在画布小部件中或不在项上方,则没有项具有当前标签。