python tkinter用按钮打开一个新窗口,后关闭旧的窗口
时间: 2023-08-04 16:24:49 浏览: 116
好的,可以使用以下代码实现在 tkinter 中用按钮打开一个新窗口,并关闭旧的窗口:
```python
import tkinter as tk
class OldWindow(tk.Tk):
def __init__(self):
super().__init__()
self.button = tk.Button(self, text="打开新窗口", command=self.open_new_window)
self.button.pack()
def open_new_window(self):
self.new_window = NewWindow()
self.new_window.protocol("WM_DELETE_WINDOW", self.on_new_window_close)
self.withdraw() # 隐藏旧窗口
def on_new_window_close(self):
self.new_window.destroy() # 关闭新窗口
self.deiconify() # 显示旧窗口
class NewWindow(tk.Toplevel):
def __init__(self):
super().__init__()
self.label = tk.Label(self, text="这是一个新窗口")
self.label.pack()
if __name__ == "__main__":
old_window = OldWindow()
old_window.mainloop()
```
在这个例子中,我们创建了一个名为 `OldWindow` 的窗口类,它有一个名为 `button` 的按钮。当用户点击这个按钮时,`OldWindow` 类的 `open_new_window` 方法会被调用,这个方法会创建一个新窗口 `NewWindow`,并隐藏旧窗口 `OldWindow`。新窗口 `NewWindow` 关闭时,会调用 `OldWindow` 类的 `on_new_window_close` 方法,这个方法会销毁新窗口 `NewWindow`,并显示旧窗口 `OldWindow`。
需要注意的是,在 `OldWindow` 类的 `open_new_window` 方法中,我们将新窗口 `NewWindow` 的关闭事件绑定到了 `OldWindow` 类的 `on_new_window_close` 方法上,这样当用户关闭新窗口时,就会触发 `on_new_window_close` 方法,从而关闭新窗口并显示旧窗口。
另外,在 `OldWindow` 类的 `open_new_window` 方法中,我们使用了 `withdraw` 方法来隐藏旧窗口,这是因为在 tkinter 中,每个窗口都是一个独立的程序对象,当一个窗口关闭后,整个应用程序也会退出。因此,我们需要隐藏旧窗口而不是关闭它。
阅读全文