如果我在Tkinter中創建一個小部件,我可以指定一個參與tcl/tk「小部件路徑」概念的部件名稱。例如:是否可以在Tkinter中按名稱搜索小部件?
from Tkinter import *
button = Button(Frame(Tk(), name = "myframe"), name = "mybutton")
str(button) == ".myframe.mybutton"
是否有可能通過它的名稱獲得一個小部件,在我的例子中是「mybutton」?
如果我在Tkinter中創建一個小部件,我可以指定一個參與tcl/tk「小部件路徑」概念的部件名稱。例如:是否可以在Tkinter中按名稱搜索小部件?
from Tkinter import *
button = Button(Frame(Tk(), name = "myframe"), name = "mybutton")
str(button) == ".myframe.mybutton"
是否有可能通過它的名稱獲得一個小部件,在我的例子中是「mybutton」?
是的,但你必須堅持的根本「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>
每一個部件的Tkinter有一個屬性children
這是一本字典widget name
→widget instance
。鑑於此,可以通過以下方式找到任何subwidget:
widget.children['subwidget_name'].children['subsubwidget_name'] # ...