首页 > 解决方案 > 没有根的顶层窗口

问题描述

root = tk.Tk()
root.geometry("400x400")

button = tk.Button(root, text = 'run')
button.pack()

def run2():
    new_root = tk.Toplevel()
    new_root.geometry("400x500")

    label = tk.Label(new_root, text="This is new root")
    label.pack()

    root.destroy()

    new_root.mainloop()

button.config(command = run2)

root.mainloop()

我想创建一个Toplevel窗口,但也想破坏根窗口。但我做不到。

标签: pythontkinter

解决方案


我想创建一个顶级窗口,但也想破坏根窗口。但我做不到。

这是正确的:你做不到。

tkinter 的一个基本方面是小部件存在于层次结构中,并且该层次结构必须具有根节点。如果您销毁树中的任何节点,所有子节点都会被自动删除。因此,如果您销毁根窗口,那么根的所有子窗口也将被删除。

没有办法绕过这个事实——必须有一个根窗口。您可以将其隐藏起来,但它仍然必须存在。


推荐阅读