Tkinter 打开顶级窗口时隐藏根窗口,并在顶级被破坏时使其重新出现

Tkinter 打开顶级窗口时隐藏根窗口,并在顶级被破坏时使其重新出现,tkinter,Tkinter,如何在第二个窗口打开时隐藏主窗口,然后在第二个窗口关闭时重新显示主窗口 我理解draw()和deiconify()的用法,但不知道如何在这种情况下应用它们 这样做的原因是最终创建一个程序,主窗口充当菜单,当其他窗口打开时隐藏,当其他窗口退出时重新出现 from tkinter import * class Main(): def __init__(self, master): self.master = master self.title = "Mai

如何在第二个窗口打开时隐藏主窗口,然后在第二个窗口关闭时重新显示主窗口

我理解draw()和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()

任何帮助都将不胜感激。

您可以在第二个窗口的
上放置一个绑定,该窗口将调用一个函数,该函数将调用主窗口上的
去确认

如果
Second
Toplevel
的子类,那么在您的代码中这将更容易实现。如果这样做,您可以将此代码隐藏在
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()
。。。
def打开(自):
第二个窗口=第二个(self.master)
...
二等(顶级):
定义初始(自我,主):
顶层。初始化(自,主)
self.master=master
self.master.draw()
self.bind(“,self.on_destroy)
def on_销毁(自身、事件):
如果event.widget==self:
self.master.deiconify()

您可以在第二个窗口的
上放置一个绑定,该窗口将调用一个函数,该函数将调用主窗口上的
deiconify

如果
Second
Toplevel
的子类,那么在您的代码中这将更容易实现。如果这样做,您可以将此代码隐藏在
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()
。。。
def打开(自):
第二个窗口=第二个(self.master)
...
二等(顶级):
定义初始(自我,主):
顶层。初始化(自,主)
self.master=master
self.master.draw()
self.bind(“,self.on_destroy)
def on_销毁(自身、事件):
如果event.widget==self:
self.master.deiconify()