添加了特定于Canvas中图像对象的相同标签以及附加到该标签的文本对象。如果使用该标签作为参数执行find_withtag方法,则返回值为空。 但是,返回值并不总是为空。
在列表中,可以分别找到带有标签“ 000330208100”和“ 112233445566”的两个对象,但是当“ 112233445566”时find_withtag()返回空。 由于无法从标签正常获取ID,因此即使将标签作为delete方法或move方法的参数,也无法正常工作。
要操作的标签存储在self.drag中。
tag_list = list()
for weight in self.canvas.find_all():
t = [ (weight,tags) for tags in self.canvas.gettags(weight) if self.drag_obj in tags]
tag_list.append(t)
print(tag_list)
print(self.canvas.find_withtag(self.drag_obj) )
self.canvas.move(self.drag_obj,dx,dy)
正常回报
[[], [], [], [], [], [], [], [], [], [], [(3, '000330208100')], [(4, '000330208100'), (4, '000330208100name')]]
(3, 4)
异常收益
[[], [], [], [], [], [], [], [], [], [], [], [], [(13, '112233445566')], [(14, '112233445566'), (14, '112233445566name')]]
()
答案 0 :(得分:0)
不能将整数用作标记值。当您使用看起来像整数的标签,然后在其他画布方法中使用该数字时,画布将假定该值是id而不是标签。
来自canonical documentation of the tk canvas widget:
每个项目可能还具有与之关联的任何数量的标签。标签只是一个字符串,它可以采用除整数之外的任何形式
...
在画布小部件命令中指定项目时,如果说明符是整数,则假定它引用具有该ID的单个项目。如果说明符不是整数,则假定引用了画布中所有具有与说明符匹配的标签的项目。