首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何一键关闭多个窗口?

问如何一键关闭多个窗口?
EN

Stack Overflow用户
提问于 2019-04-07 22:39:32
回答 3查看 298关注 0票数 2

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

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

我使用的是python 3.7!

代码语言:javascript
复制
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()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-07 23:01:22

您不应该在tkinter应用程序中多次调用tkinter.Tk()。如果您想创建一个新窗口,请调用Toplevel()。

您通常也不需要多次调用mainloop()。

要同时关闭新窗口和主窗口,可以在创建主窗口时将后者传递给前者,然后在qExit()函数中对其执行destroy()操作(以及新窗口本身)。

注我更改了一些函数和变量名,以便更符合PEP 8 - Style Guide for Python Code指南。

代码语言:javascript
复制
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()
票数 0
EN

Stack Overflow用户

发布于 2019-04-07 23:00:46

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

票数 0
EN

Stack Overflow用户

发布于 2019-04-07 23:00:51

不需要描述

代码语言:javascript
复制
def qExit():
    root.destroy()
    Window.destroy()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55560127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档