Можно ли уничтожить виджеты Tkinter по пути? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть несколько виджетов, созданных в цикле, каждому из которых присваивается последовательное имя, например:

for item in itemlist:
    myWidget=tk.Widget(root, name=item)
    myWidget.pack()

Теперь у меня есть виджеты с такими путями, как

.!mainapplication.!itemframe.item1

возможно ли использовать путь для уничтожения виджета?

Я не могу использовать myWidget.destroy(), потому что тогда я не могу нацеливать определенные виджеты.

Если это невозможно, я могу создать массив для хранения виджетов и обработки их оттуда, но мне было интересно, есть ли способ сделать это таким образом.

1 Ответ

0 голосов
/ 31 мая 2019

Если вы сохраните возвращаемое значение tk.Widget(...) в списке или словаре, вы сможете получить доступ к любому из виджетов без использования имени.На сегодняшний день это наиболее распространенный и удобный способ управления виджетами, созданными в цикле.

Пример:

widgets = []
for item in itemlist:
    myWidget=tk.Widget(root, name=item)
    myWidget.pack()
    widgets.appen(widget)
...
for widget in widgets:
    widget.destroy()

Если вам действительно нужно преобразовать имя в виджет, tkinter предоставляетметод для каждого виджета с именем nametowidget, который принимает имя виджета и возвращает экземпляр.

root.nametowidget('.!mainapplication.!itemframe.item1').destroy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...