关闭一个窗口并通过Tkinter中的按钮打开一个新窗口

时间:2015-09-07 10:12:36

标签: python tkinter

我想知道是否有办法打开Toplevel()的新实例并通过按下按钮关闭当前的实例,即关闭当前窗口并打开一个新窗口。以下是有问题的代码:

def start(self):
        self.name = tk.DoubleVar()
        name_w = tk.Toplevel(root)
        name_w.wm_title("Enter name")
        f1 = tk.Frame(name_w)
        f1.pack()
        L1 = tk.Label(f1, text="Please enter your name!")
        L1.grid(row=0, column=0)
        E1 = tk.Entry(f1, textvariable=self.name)
        E1.grid(row=1, column=0)
        N1 = tk.Button(f1, text="Next", command = self.Q1)
        N1.grid(row=2, column=0)

在这种情况下,我希望调用self.Q1,同时还要销毁name_w。反正有没有这样做?感谢。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。要关闭Toplevel的实例,只需将其销毁即可。您需要保存对窗口的引用。在你的情况下,我要么Q1破坏窗口,要么创建一个单独的函数调用Q1然后销毁窗口。这完全取决于Q1的主要目的是什么。

例如:

def start(self):
    ...
    self.new_window = name_w
    ...

def quit_window(self):
    self.Q1()
    self.new_window.destroy()

如果你有多个这些,你可能需要将窗口引用存储在列表或字典中,但基本机制是相同的:使用.destroy()来销毁窗口。

当然,这不是唯一的方法。您可以使用lambda或functools.partial以及一个接受要销毁的窗口名称的函数,或者您可以使用嵌套函数等。