关闭多个顶层



我创建了一个tkinter应用程序,用户可以在其中创建多个顶层窗口,并可以选择从顶层内部关闭它们。我想在主窗口上做一个按钮,关闭所有顶层窗口。我该怎么做呢?有没有办法不用列表就能做到这一点?如果这些顶层是类的一部分,是否也有一种方法来调用所有这些存在的函数?

这是如何做你的问题的第一部分,在主窗口中制作一个按钮来删除所有的Toplevel,而不制作它们的列表。这是通过使用通用的winfo_children()widget方法来查找根(主)窗口的所有子部件来实现的。

我不清楚你的意思是调用所有的函数-Toplevel小部件是预定义的tkinter类的实例,它支持一组预定义的方法-你可以调用它们相同的方式下面的示例代码与child.destroy()

import tkinter as tk
root = tk.Tk()
root.title('Main')
root.geometry('200x100')
def close_all(master):
for child in master.winfo_children():
if isinstance(child, tk.Toplevel):
child.destroy()  # Call method.
button = tk.Button(root, text=f"Close Toplevels",
command=lambda master=root: close_all(master))
button.pack()
for i in reversed(range(4)):  # Create them bottom to top.
toplevel = tk.Toplevel()
toplevel.title(f'Toplevel {i+1}')
toplevel.geometry('200x75')
toplevel.lift()
button = tk.Button(toplevel, text="Close me", command=toplevel.destroy)
button.pack()
root.mainloop()

相关内容

  • 没有找到相关文章

最新更新