簡體   English   中英

如何通過單擊關閉多個窗口?

[英]How to close more than one window with a single click?

我想在用戶單擊“開始”按鈕時同時關閉兩個窗口,新窗口將彈出,當用戶單擊第二個彈出窗口上的“退出”按鈕時,兩個窗口都應該一次關閉。

我知道對於不同的窗口,我必須創建一個單獨的函數來退出窗口但我想通過單擊關閉多個窗口。

我正在使用 python 3.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()

一個簡單的解決方案是執行 exit() 來停止程序,這將關閉所有窗口。 或者,您可以列出所有打開的窗口對象並對所有對象調用 destroy 。

無需說明

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

你不應該叫tkinter.Tk()不止一次在tkinter應用。 如果要創建新窗口,請調用Toplevel()

您通常也不需要mainloop()調用mainloop()

要同時關閉新窗口和主窗口,您可以在創建時將后者傳遞給前者,然后在qExit()函數(以及新窗口本身)中destroy()它。

注意我更改了一些函數和變量名稱以更符合PEP 8 - Python 代碼指南的樣式指南

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM