2012-01-17 39 views
5

如果我在Tkinter中創建一個小部件,我可以指定一個參與tcl/tk「小部件路徑」概念的部件名稱。例如:是否可以在Tkinter中按名稱搜索小部件?

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

是否有可能通過它的名稱獲得一個小部件,在我的例子中是「mybutton」?

回答

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> 
3

每一個部件的Tkinter有一個屬性children這是一本字典widget namewidget instance。鑑於此,可以通過以下方式找到任何subwidget:

widget.children['subwidget_name'].children['subsubwidget_name'] # ... 
相關問題