Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过事件修改Tkinter画布中的标记_Python_Canvas_Tkinter_Event Handling - Fatal编程技术网

Python 如何通过事件修改Tkinter画布中的标记

Python 如何通过事件修改Tkinter画布中的标记,python,canvas,tkinter,event-handling,Python,Canvas,Tkinter,Event Handling,我正在以编程方式将tag_绑定添加到画布上具有标记“tag”的所有对象: 我想做的是有一个把手,比如: t=self.canvas.getitem(event.widget) 因此,我可以使用它,例如: self.canvas.Move(t,30,20) print self.canvas.coords(t) 等等。 也许我只是错过了显而易见的东西?您可以使用标记“current”,它指的是“current”对象。当前对象的描述如下所示: 标签电流由Tk自动管理;它适用于 当前项,它是绘制区

我正在以编程方式将tag_绑定添加到画布上具有标记“tag”的所有对象:

我想做的是有一个把手,比如:

t=self.canvas.getitem(event.widget)
因此,我可以使用它,例如:

self.canvas.Move(t,30,20)
print self.canvas.coords(t)
等等。 也许我只是错过了显而易见的东西?

您可以使用标记“current”,它指的是“current”对象。当前对象的描述如下所示:

标签电流由Tk自动管理;它适用于 当前项,它是绘制区域覆盖 鼠标光标的位置(不同的项目类型对此进行了解释 不同的方式;有关详细信息,请参阅单个项目类型文档)。 如果鼠标不在画布小部件中或不在项目上方,则 没有项目具有当前标记


布莱恩:我知道这是一个古老的问题和答案,但在链接的tk文档中,它说标记字符串“可以采用除整数以外的任何形式”。然而,在Python3.7.1中,使用这样的标记(通过
str(intval)
创建)似乎可以很好地工作。tk文档是否过期或错误?@martineau:您不能使用整数的原因是,当您稍后尝试使用它时,画布会将其解释为项目id。嗯,在事件处理方面可能是这样,但在我自己的代码中,稍后使用它通过
canvas.itemconfig()
调用修改现有对象,它似乎工作正常。@martineau:您可能需要重新检查代码。自从tk发明以来就一直是这样,他们非常重视向后兼容性。使用3.7.1,我刚刚创建了一个带有整数作为标记的canvas对象,但无法使用该标记对其进行配置。我认为启动allow会向后兼容,因为不应该有人这样做。实际上没什么可回顾的,因为代码的这些部分相对简单。我上传了一份,若你们想看证据,只需要搜索
str(index)
t=self.canvas.getitem(event.widget)
self.canvas.Move(t,30,20)
print self.canvas.coords(t)