如何销毁所有打开的tkinter顶层窗口

时间:2018-12-28 17:28:45

标签: python tkinter toplevel

我这里有几行代码可打开tkinter toplevel window,可通过单击destroy all button将其破坏。当我打开几个窗户,我想摧毁所有只有一个被摧毁的挑战。尝试过quit功能,但是它关闭了包括root window在内的所有窗口。我只希望破坏所有顶层窗口。

import tkinter as tk




def open_window():
    global top1
    top1 = tk.Toplevel()

    top1.geometry("100x100")


def destroy_all():
    top1.destroy()



root = tk.Tk()
root.geometry("500x500")


b1 = tk.Button(root, text="open", command=open_window)
b1.pack(side=tk.TOP)


b2 = tk.Button(root, text="destroy all", command=destroy_all)
b2.pack(side=tk.BOTTOM)


root.mainloop()

2 个答案:

答案 0 :(得分:2)

您可以遍历您创建的所有小部件,并销毁Toplevels

的小部件
def destroy_all():
    for widget in root.winfo_children():
        if isinstance(widget, tk.Toplevel):
            widget.destroy()

答案 1 :(得分:2)

我喜欢在处理动态生成的小部件/容器时使用列表。在这里,我将使用一个列表来保存顶级,然后销毁列表中的每个顶级。

...
optimization: {
    splitChunks: {
        cacheGroups: {
            commons: {
                name: 'global',
                filename: 'js/corp/global.js',
                chunks: 'all',
                minChunks: 2
            }
        }
    }
},
...