打开另一个窗口时关闭当前窗口

时间:2016-02-16 14:04:08

标签: python user-interface python-3.x tkinter tk

我使用GUI模块tkinter在python 3.4中创建了一个程序。我想调整代码,以便在调用新窗口时关闭当前窗口,然后打开新窗口。目前,当前窗口只是放在新窗口后面而不是销毁它。我试图使用.destroy(),但这会阻止其他窗口打开。我有我的程序,执行下面的当前窗口开关。

    def help1(self):
      root2=Toplevel(self.master)
      HelpWindow= HelpScreen.Help(root2)

我理解这个问题很常见但我在这里找不到适用于我的代码的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用destroy()方法销毁顶层窗口。您不应该在根窗口上执行此操作,但您可以在任何其他窗口上执行此操作。

如果您只想在应用程序中使用一个窗口,请创建一个根窗口然后隐藏它并且不要使用它。然后,将第一个真实窗口创建为Toplevel。从那时起,您可以轻松地销毁当前窗口并创建一个新窗口。

这是一个人为的例子:

import tkinter as tk

root = tk.Tk()
root.withdraw()

current_window = None

def  replace_window(root):
    """Destroy current window, create new window"""
    global current_window
    if current_window is not None:
        current_window.destroy()
    current_window = tk.Toplevel(root)

    # if the user kills the window via the window manager,
    # exit the application. 
    current_window.wm_protocol("WM_DELETE_WINDOW", root.destroy)

    return current_window

counter = 0
def new_window():
    global counter
    counter += 1

    window = replace_window(root)
    label = tk.Label(window, text="This is window %s" % counter)
    button = tk.Button(window, text="Create a new window", command=new_window)
    label.pack(fill="both", expand=True, padx=20, pady=20)
    button.pack(padx=10, pady=10)

window = new_window()