是否可以在Tkinter中按名称搜索小部件?

时间:2012-01-17 12:45:56

标签: python tkinter

如果我在Tkinter中创建一个小部件,我可以指定参与tcl / tk“小部件路径”概念的小部件名称。例如:

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

是否可以通过它的名称获取一个小部件,在我的示例中使用“mybutton”?

2 个答案:

答案 0 :(得分:7)

是的,但您必须持有对根的引用" 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>

答案 1 :(得分:4)

每个Tkinter小部件都有一个属性children,它是widget namewidget instance的字典。鉴于此,可以通过以下方式找到任何子组件:

widget.children['subwidget_name'].children['subsubwidget_name'] # ...