我想同时关闭两个窗口,当用户单击Start按钮时,新窗口将弹出,当用户单击第二个弹出窗口上的退出按钮时,两个窗口应同时关闭。
我知道对于不同的窗口,我必须创建一个单独的函数来退出窗口,但我希望通过一次单击关闭多个窗口。
我使用的是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()发布于 2019-04-07 23:01:22
您不应该在tkinter应用程序中多次调用tkinter.Tk()。如果您想创建一个新窗口,请调用Toplevel()。
您通常也不需要多次调用mainloop()。
要同时关闭新窗口和主窗口,可以在创建主窗口时将后者传递给前者,然后在qExit()函数中对其执行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()发布于 2019-04-07 23:00:46
一个简单的解决方案是执行exit()来停止程序,这将关闭所有窗口。或者,您可以列出所有打开的窗口对象,并对所有这些对象调用destroy。
发布于 2019-04-07 23:00:51
不需要描述
def qExit():
root.destroy()
Window.destroy()https://stackoverflow.com/questions/55560127
复制相似问题