我怎样才能找到小部件的 Toplevel 容器?
How may I find out the Toplevel container of a widget?
我像往常一样创建深度嵌套的小部件框架,有时可以创建其他 Toplevel。 帧数。
当我创建一个新的 Toplevel frame 时,我想存储创建新 Toplevel 的原始 Toplevel frame但是由于创建它的按钮深深地嵌套在自己的框架中,并且不知道它在其 Toplevel 层次结构中的位置,它如何发现其 Toplevel 容器以将其传递到其他地方?
我是否必须提前将它存储在某种全局属性中,或者是否有办法通过一些内省找到它?
调用 any_widget._root() 返回根容器(tkinter.Tk 实例)...是否有一个令人惊讶的未记录的 widget._toplevel方法?
编辑:删除(供将来参考)单词 frame 的使用错误和混淆。
小部件方法 winfo_toplevel 将 return Toplevel
或 Tk
的实例。
top = some_widget.winfo_toplevel()
我不确定,但我认为顶层是指小部件的父级:如果您创建了嵌套小部件,例如
root = tk.Tk()
frame = tk.Frame(root)
label = tk.Label(frame, text="text")
那么 frame
是 label
的父级,root
是 frame
的父级。
要访问一个widget的parent,可以使用winfo_parent
方法获取parent名称,然后,nametowidget
方法获取名称对应的实际widget:
any_widget.nametowidget(any_widget.winfo_parent())
我像往常一样创建深度嵌套的小部件框架,有时可以创建其他 Toplevel。 帧数。
当我创建一个新的 Toplevel frame 时,我想存储创建新 Toplevel 的原始 Toplevel frame但是由于创建它的按钮深深地嵌套在自己的框架中,并且不知道它在其 Toplevel 层次结构中的位置,它如何发现其 Toplevel 容器以将其传递到其他地方?
我是否必须提前将它存储在某种全局属性中,或者是否有办法通过一些内省找到它?
调用 any_widget._root() 返回根容器(tkinter.Tk 实例)...是否有一个令人惊讶的未记录的 widget._toplevel方法?
编辑:删除(供将来参考)单词 frame 的使用错误和混淆。
小部件方法 winfo_toplevel 将 return Toplevel
或 Tk
的实例。
top = some_widget.winfo_toplevel()
我不确定,但我认为顶层是指小部件的父级:如果您创建了嵌套小部件,例如
root = tk.Tk()
frame = tk.Frame(root)
label = tk.Label(frame, text="text")
那么 frame
是 label
的父级,root
是 frame
的父级。
要访问一个widget的parent,可以使用winfo_parent
方法获取parent名称,然后,nametowidget
方法获取名称对应的实际widget:
any_widget.nametowidget(any_widget.winfo_parent())