簡體   English   中英

Tkinter從頂級破壞根

[英]Tkinter destroy root from Toplevel

我正在tkinter中編寫一個多窗口GUI程序。 下面顯示的代碼是我代碼主要部分的布局。 第一個窗口工作正常,但是當我通過調用self.next_win進入第二個窗口時,有些事情開始變得很有趣。

主要問題是何時銷毀GUI:我希望每個窗口中都有一個退出按鈕,按下該按鈕可關閉整個GUI( root.destroy )。 從第一個窗口可以正常工作,我調用了self.quit方法。 但是當我到達第二個窗口時,它不起作用。 我知道這是因為第二個窗口中的masterToplevel小部件,但是我不確定該如何解決。 我看不到如何從第二個窗口調用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.

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