如何通过单击关闭多个窗口?

2024-10-03 15:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想同时关闭两个窗口当用户单击开始按钮时,新窗口将弹出,当用户单击第二个弹出窗口上的退出按钮时,两个窗口应同时关闭。你知道吗

我知道对于一个不同的窗口,我必须创建一个单独的函数来退出窗口,但我想通过单击关闭多个窗口。你知道吗

我在用python3.7!你知道吗

import tkinter

def NewWindow():

    def qExit():
        root.destroy()

    root = tkinter.Tk()
    root.title("New Window")
    newButton = tkinter.Button(root, text=" Click here  to Exit:",
                                command=qExit)
    newButton.pack()
    root.geometry("300x200")
    root.mainloop()


Window = tkinter.Tk()
Window.title("hello")
eButton = tkinter.Button(Window, text="Start", command=NewWindow)
eButton.pack()
Window.geometry("200x200")
Window.mainloop()

Tags: text用户titletkinterdefbuttonrootwindow
3条回答

tkinter应用程序中,不应多次调用tkinter.Tk()。如果要创建新窗口,请调用^{}。你知道吗

您通常也不需要多次调用mainloop()。你知道吗

要同时关闭新窗口和主窗口,可以在创建它时将后者传递给前者,然后在destroy()函数中传递它(以及新窗口本身)。你知道吗

注意,我更改了一些函数和变量名,以更符合PEP 8 - Style Guide for Python Code准则。你知道吗

import tkinter

def makeWindow(parent):

    def qExit():
        newWindow.destroy()
        parent.destroy()

    newWindow = tkinter.Toplevel()
    newWindow.geometry("300x200")
    newWindow.title("New Window")
    newButton = tkinter.Button(newWindow, text=" Click here  to Exit",
                               command=qExit)
    newButton.pack()


root = tkinter.Tk()
root.title("hello")
eButton = tkinter.Button(root, text="Start", command=lambda: makeWindow(root))
eButton.pack()
root.geometry("200x200")
root.mainloop()

一个简单的解决方案是执行exit()停止程序,这将关闭所有窗口。或者,您可以列出所有打开的窗口对象,并对所有这些对象调用destroy。你知道吗

无需描述

def qExit():
    root.destroy()
    Window.destroy()

相关问题 更多 >