Почему find_withtag не возвращает идентификатор в некоторых случаях? - PullRequest
0 голосов
/ 02 мая 2020

Может кто-нибудь объяснить, почему я получаю вывод: - теги, примененные к овалу, являются ('paul', '20', '1993', '1.1.1.1'), но теги, найденные на овале, являются единственными () () ( 1,) (1,)

Почему первые два теста возвращают также Id?

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 голосов
/ 02 мая 2020

Теги не могут быть целыми числами или строками, которые выглядят как целые числа, потому что они неотличимы от идентификаторов элементов.

Когда вы делаете c.find_withtag(xtra1), tkinter интерпретирует это как поиск элемента с идентификатором того, что находится в xtra1, поскольку вы передаете строку цифр.

Со страницы руководства tcl / tk canvas:

С каждым элементом также может быть связано любое количество тегов. Тег - это просто строка символов, и он может принимать любую форму , кроме целого числа . Например, «x123» в порядке, а «123» - нет.

...