Можно ли искать виджет по имени в Tkinter? - PullRequest
5 голосов
/ 17 января 2012

Если я создаю виджет в Tkinter, я могу указать имя виджета, которое принимает участие в концепции tcl / tk «путь к виджету». Например:

from Tkinter import *
button = Button( Frame( Tk(), name = "myframe" ), name = "mybutton" )
str( button ) == ".myframe.mybutton"

Можно ли получить виджет по имени, в моем примере «mybutton»?

Ответы [ 2 ]

7 голосов
/ 17 января 2012

Да, но вы должны хранить ссылку на корневой экземпляр "Tk": просто используйте метод "Tk.nametowidget":

>>> from Tkinter import *
>>> win = Tk()
>>> button = Button( Frame( win, name = "myframe" ), name = "mybutton" )
>>> win.nametowidget("myframe.mybutton")
<Tkinter.Button instance at 0x2550c68>
5 голосов
/ 22 ноября 2012

Каждый виджет Tkinter имеет атрибут children, который является словарем widget namewidget instance. Учитывая это, любой подвиджет можно найти по:

widget.children['subwidget_name'].children['subsubwidget_name'] # ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...