[英]Tkinter destroy root from Toplevel
我正在tkinter中編寫一個多窗口GUI程序。 下面顯示的代碼是我代碼主要部分的布局。 第一個窗口工作正常,但是當我通過調用self.next_win
進入第二個窗口時,有些事情開始變得很有趣。
主要問題是何時銷毀GUI:我希望每個窗口中都有一個退出按鈕,按下該按鈕可關閉整個GUI( root.destroy
)。 從第一個窗口可以正常工作,我調用了self.quit
方法。 但是當我到達第二個窗口時,它不起作用。 我知道這是因為第二個窗口中的master
是Toplevel
小部件,但是我不確定該如何解決。 我看不到如何從第二個窗口調用root.destroy
。
我怎樣才能解決這個問題? 可能是SecondWin.quit
方法中的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()
您需要做的就是告訴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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.