使用object标签(字符串)无法从数组中删除画布项

时间:2018-05-31 22:24:59

标签: tkinter tkinter-canvas

我无法使用object tag(string)

从数组中删除画布项
StampedLock

2 个答案:

答案 0 :(得分:2)

来自Tk doc:

  

每个项目也可能包含任意数量的标签。一个标签   只是一串字符,它可以采取任何形式,除了   一个整数。 例如,'x123'可以,但'123'不是......

答案 1 :(得分:0)

#this part does NOT respond. Why? Please help!
cv.delete((str(11),))

以上代码与此相同:

tag = str((str(11),))
cv.delete(tag)

当您检查tag时,您会看到该值是字符串('11',)。 Tkinter将使用7字节标记('11',)逐字地查找画布项。画布上没有任何带有该标签的项目。

部分问题在于您正在尝试创建一个对象并为其提供一个由两个整数组合而成的标记。这不是画布项的有效标记,因为tkinter无法将标记与作为整数的画布项标识符区分开来。对于仅由数字组成的序列,Canvas标签可以是之外的任意字符串。

在创建椭圆的代码中,如果要应用自定义标记,则它不能是整数形式。例如,您可以添加单个字符以使标记正确。然后,您只需在代码中使用相同的标记:

cc="o" + str(row)+str(col)
cv.create_oval(coords, fill=clr, tags=(cc,))
...
cv.delete("o11")