我正在tkinter中编写一个多窗口GUI程序。下面显示的代码是我的代码主要部分的布局。第一个窗口工作正常但是当我通过调用self.next_win
到达第二个窗口时,有些事情开始变得非常有趣。
主要问题是当我去销毁GUI时:我希望每个窗口都有一个退出按钮,当按下该按钮时,关闭整个GUI(root.destroy
)。从第一个窗口可以正常工作,我调用self.quit
方法;但是当我到达第二个窗口时,它不起作用。我知道这是因为第二个窗口中的master
是一个Toplevel
小部件,但我不知道如何解决这个问题。我看不出如何从第二个窗口调用root.destroy
。
我该如何解决这个问题?也许是SecondWin.quit
方法中的一行,或者是一个更好的代码结构,使解决方案变得微不足道(请记住,我是一个初学者,所以必须解释琐事)?感谢。
class FirstWin:
def __init__(self, master):
self.master = master
...
...
def next_win(self):
self.master.withdraw()
root2 = Toplevel()
SecondWin(root2)
def quit(self):
self.master.destroy()
class SecondWin:
def __init__(self, master):
self.master = master
...
...
def quit(self):
self.master.destroy() # What goes in here?
...
def main():
root = Tk()
GUI = FirstWin(root)
root.mainloop()
if __name__ == '__main__':
main()
答案 0 :(得分:1)
您需要做的就是告诉SecondWin根窗口是什么,它可以销毁它。
...
root2 = Toplevel()
# tell the second window what the master is,
# and also tell it to be a child of FirstWin.
SecondWin(self.master, root2)
...
class SecondWin():
def __init__(self, root, master):
# root is the root window, master is the parent of this window
self.root = root
self.master = master
<other initialization code here>
def quit(self):
self.root.destroy()