像往常一样,我创建了深层嵌套的小部件框架,有时可以创建其他Toplevels。 <删除>帧。德尔>
当我创建一个新的Toplevel 框架时,我想存储创建新Toplevel的原始Toplevel 框架但是因为创建它的按钮深深嵌套在自己的框架内,并且不知道它在Toplevel的层次结构中的位置,它如何发现它的Toplevel容器将其传递到其他地方?
我是否必须事先将其存储在某种全局属性中,或者是否有办法通过使用一些内省来找到它?
调用 any_widget._root()让我回到根容器(tkinter.Tk实例)......是否有一个令人惊讶的未记录的 widget._toplevel 方法?
编辑:删除(以供将来参考)单词 frame ,其中使用错误且令人困惑。
答案 0 :(得分:1)
小部件方法winfo_toplevel将返回Toplevel
或Tk
的实例。
top = some_widget.winfo_toplevel()
答案 1 :(得分:0)
我不确定,但我认为通过toplevel你意味着小部件的父级:如果你创建了嵌套小部件,如
root = tk.Tk()
frame = tk.Frame(root)
label = tk.Label(frame, text="text")
然后frame
是label
的父级,root
是frame
的父级。
要访问窗口小部件的父窗口,可以使用winfo_parent
方法获取父名称,然后使用nametowidget
方法获取与名称对应的实际窗口小部件:
any_widget.nametowidget(any_widget.winfo_parent())