Tkinter 如何查找小部件的顶级容器?

Tkinter 如何查找小部件的顶级容器?,tkinter,python-3.5,introspection,Tkinter,Python 3.5,Introspection,像往常一样,我创建了嵌套很深的小部件框架,有时还可以创建其他顶层。框架 当我创建一个新的顶层框架时,我想存储创建新顶层的原始顶层框架,但由于创建它的按钮深深嵌套在它自己的框架中,并且不知道它在顶层层次结构中的位置,它如何发现顶级容器并将其传递到其他地方 我是否必须将它预先存储在某种全局属性中,或者是否有一种方法通过使用一些内省来找到它 调用任何_小部件。_root()返回根容器(tkinter.Tk实例)。。。是否有一个令人惊讶的未记录的小部件。\u顶级方法 EDIT:删除(供将来参考)使用错误

像往常一样,我创建了嵌套很深的小部件框架,有时还可以创建其他顶层。框架

当我创建一个新的顶层框架时,我想存储创建新顶层的原始顶层框架,但由于创建它的按钮深深嵌套在它自己的框架中,并且不知道它在顶层层次结构中的位置,它如何发现顶级容器并将其传递到其他地方

我是否必须将它预先存储在某种全局属性中,或者是否有一种方法通过使用一些内省来找到它

调用任何_小部件。_root()返回根容器(tkinter.Tk实例)。。。是否有一个令人惊讶的未记录的小部件。\u顶级方法


EDIT:删除(供将来参考)使用错误且令人困惑的单词框架。

有一个小部件方法,它将返回
Toplevel
Tk
的实例

top = some_widget.winfo_toplevel()

我不确定,但我认为toplevel指的是小部件的父级:如果您创建了嵌套的小部件,如

root = tk.Tk()
frame = tk.Frame(root)
label = tk.Label(frame, text="text")
然后,
frame
label
的父级,
root
frame
的父级

要访问小部件的父级,可以使用
winfou parent
方法获取父级名称,然后使用
nametowidget
方法获取与名称对应的实际小部件:

any_widget.nametowidget(any_widget.winfo_parent())

Toplevel
是一种特定类型的小部件,
Frame
是一种特定类型的小部件。因此,“顶层框架”是不明确的。您是在询问有关获取顶级的实例,还是框架的实例?@Brian Oakley:您说得对!,当然,…虽然在我看来,他们经常在一起,因为我过去是如何设计我的课程的。。。我问的是如何获得Toplevel的实例,无论如何……这就是我正在寻找的!我不知道我怎么会错过它。实际上,我指的是填充在框架中的所有小部件的顶层,其主控是顶层。我理解你的意思,但如果你不知道自己在哪里,并且小部件每次都堆叠在不同的层间,这可能会成为一个问题。不管怎样,nametowidget方法很有趣。