为什么在某些情况下find_withtag不返回ID?

时间:2020-05-02 13:13:58

标签: python tkinter find

谁能解释为什么我得到:-应用于椭圆的标签的输出是('paul','20','1993','1.1.1.1')但是在椭圆上找到的标签只有()()( 1,)(1,)

为什么还不通知前2个测试也返回ID为1?

import tkinter as tk

root = tk.Tk()
xtra1 = "20"
yrbl = "1993"
prefix = "1.1.1.1"
c = tk.Canvas (root)

id1 = c.create_oval(10,10, 120, 120, tags=("paul",xtra1, yrbl, prefix ),fill="red", )
t1 = c.gettags(id1)

test = c.find_withtag(xtra1)
test1 = c.find_withtag(yrbl)
test2 = c.find_withtag(prefix)
test3 = c.find_withtag("paul")

print ("tags applied to oval are",t1, "but tags found on oval are only ", test,test1,test2,test3,)
c.pack()
root.mainloop()

1 个答案:

答案 0 :(得分:0)

标签不能是整数或看起来像整数的字符串,因为它们与项目ID不能区分。

当您执行c.find_withtag(xtra1)时,tkinter会将其解释为找到一个ID为xtra1中任何内容的项目,因为您要传递数字串。

在tcl / tk画布手册页中:

每个项目可能还具有与之关联的任何数量的标签。标签只是一个字符串,它可以采用除整数以外的任何形式。例如,“ x123”可以,但“ 123”不能。

相关问题