2014-07-21 65 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() 
相关问题