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

Python 如何销毁所有打开的tkinter顶级窗口,python,tkinter,toplevel,Python,Tkinter,Toplevel,我这里有几行代码,打开了tkinter顶层窗口,点击destroy all按钮即可销毁该窗口。当我打开几个窗口并想要销毁所有窗口时,挑战是只有一个窗口被销毁。尝试了退出功能,但它关闭了所有窗口,包括根窗口。我只想毁掉所有的顶层窗户 import tkinter as tk def open_window(): global top1 top1 = tk.Toplevel() top1.geometry("100x100") def destroy_all()

我这里有几行代码,打开了
tkinter顶层窗口
,点击
destroy all按钮
即可销毁该窗口。当我打开几个窗口并想要销毁所有窗口时,挑战是只有一个窗口被销毁。尝试了退出功能,但它关闭了所有窗口,包括根窗口。我只想毁掉所有的顶层窗户

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()

您可以循环浏览您创建的所有小部件,并销毁那些顶级的小部件

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

您可以循环浏览您创建的所有小部件,并销毁那些顶级的小部件

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

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

import tkinter as tk


def open_window():
    list_of_tops.append(tk.Toplevel(root))
    list_of_tops[-1].geometry("100x100")


def destroy_all():
    for top_window in list_of_tops:
        top_window.destroy()

root = tk.Tk()
root.geometry("500x500")
list_of_tops = [] # list to store any toplevel window.
tk.Button(root, text="open", command=open_window).pack(side=tk.TOP)
tk.Button(root, text="destroy all", command=destroy_all).pack(side=tk.BOTTOM)
root.mainloop()

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

import tkinter as tk


def open_window():
    list_of_tops.append(tk.Toplevel(root))
    list_of_tops[-1].geometry("100x100")


def destroy_all():
    for top_window in list_of_tops:
        top_window.destroy()

root = tk.Tk()
root.geometry("500x500")
list_of_tops = [] # list to store any toplevel window.
tk.Button(root, text="open", command=open_window).pack(side=tk.TOP)
tk.Button(root, text="destroy all", command=destroy_all).pack(side=tk.BOTTOM)
root.mainloop()

你考虑过将窗口附加到列表而不是标量变量吗?@BryanOakley我不明白你的建议。你考虑过将窗口附加到列表而不是标量变量吗?@BryanOakley我不明白你的建议。