tkinter: лучший способ пометить произвольный виджет для поиска - PullRequest
0 голосов
/ 26 декабря 2018

При создании своих собственных виджетов на основе стандартных я добавлял поле «имя» к каждому моему классу виджетов для более легкого доступа позже, например:

class MyFrame(tk.Frame):
    def __init__(self, master, name, *args, *kwargs):
        super().__init__(master, *args, *kwargs)
        self.name = name

После настройкивсего окна, я мог бы сделать что-то вроде:

mywidget = allWidgets['myWidgetName']

Но я не мог не задаться вопросом, есть ли лучший подход с использованием встроенных атрибутов виджета, без добавленияновый тег.Я знаю, что winfo_children() помогает пройти по дереву виджетов, но мне нужен произвольный доступ.

1 Ответ

0 голосов
/ 26 декабря 2018

Основываясь на подсказке @BryanOakley, я наконец обнаружил, что все виджеты Tkinter имеют атрибут ._name, значение по умолчанию которого !<classname>, все строчные, даже если имя класса использует смешанные регистры.

Iможет затем присвоить любое имя ._name после создания класса моего виджета.Понятно, что эта деталь выпадает из официального документа, потому что это не часть общедоступного интерфейса, а знание этой моментально сохраненной памяти для моей собственной работы.

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

Я должен поблагодарить Брайана за его находчивость, когдадело доходит до Ткинтера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...