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

2024-04-19 06:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我知道这个问题很常见,但我在这里找不到适合我的代码的解决方案。


Tags: 模块代码self程序mastertkinterdefhelp
1条回答
网友
1楼 · 发布于 2024-04-19 06:24:59

可以使用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()

相关问题 更多 >