如何根据事件修改Tkinter Canvas中的标签



我以编程方式将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自动管理;它适用于当前项,它是其绘制区域覆盖控件的最上面的项鼠标光标的位置(不同的项目类型在不同的方法;有关详细信息,请参阅各个项目类型文档)。如果鼠标不在画布小部件中或不在项上方,则没有项具有当前标签。

最新更新