2014-07-21 66 views
1

如何在SECOND窗口打開時隱藏MAIN窗口,然後在SECOND窗口關閉時再次顯示MAIN窗口?打開Toplevel窗口時隱藏根窗口並在Toplevel被破壞時使其重新出現

我明白使用withdraw()和deiconify(),但不知道如何在這種情況下應用它們。

這樣做的原因是最終創建一個程序,其主窗口用作隱藏其他窗口從其中打開時隱藏的菜單,並在其他窗口退出時重新顯示。

from tkinter import * 

class Main(): 

    def __init__(self, master): 
     self.master = master 
     self.title = "Main Window" 

     self.button1 = Button(self.master, text="Click Me", command = self.Open) 
     self.button1.grid(row=0, column=0, sticky=W) 
     self.button2 = Button(self.master, text="Close", command = self.Close) 
     self.button2.grid(row=1, column=0, sticky=W) 


    def Open(self): 
     second_window = Toplevel(self.master) 
     window2 = Second(second_window) 

    def Close(self): 
     self.master.destroy() 


class Second(): 

    def __init__(self, master): 
     self.master = master 
     self.title = "Second Window" 



root = Tk() 
main_window = Main(root) 
root.mainloop() 

任何幫助將不勝感激。

回答

3

您可以在第二個窗口的<Destroy>上放置一個綁定,它將調用一個將在主服務器上調用deiconify的函數。

如果SecondToplevel的子類,那麼在代碼中這將更容易。如果你這樣做了,你可以將這段代碼隱藏在Second的定義中。例如:

... 
def Open(self): 
    second_window = Second(self.master) 
... 

class Second(Toplevel): 

    def __init__(self, master): 
     Toplevel.__init__(self, master) 
     self.master = master 
     self.master.withdraw() 
     self.bind("<Destroy>", self.on_destroy) 

    def on_destroy(self, event): 
     if event.widget == self: 
      self.master.deiconify() 
相關問題