python tkinter关闭一个窗口,打开一个新窗口
时间: 2023-07-20 20:21:01 浏览: 93
好的,可以使用以下代码来关闭一个窗口并打开一个新窗口:
```python
import tkinter as tk
def close_window():
root.destroy() # 关闭当前窗口
def open_new_window():
new_window = tk.Toplevel(root) # 创建新窗口
# 在新窗口中添加控件等
root = tk.Tk()
# 在主窗口中添加控件等
close_button = tk.Button(root, text="关闭窗口", command=close_window)
close_button.pack()
open_button = tk.Button(root, text="打开新窗口", command=open_new_window)
open_button.pack()
root.mainloop()
```
其中,`close_window()`函数用于关闭当前窗口,`open_new_window()`函数用于打开新窗口。在主窗口中添加了一个“关闭窗口”按钮和一个“打开新窗口”按钮,分别绑定了上述两个函数。当用户点击“关闭窗口”按钮时,就会关闭当前窗口;当用户点击“打开新窗口”按钮时,就会打开一个新窗口。
相关问题
python tkinter用按钮打开一个新窗口,后关闭旧的窗口
好的,可以使用以下代码实现在 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 中,每个窗口都是一个独立的程序对象,当一个窗口关闭后,整个应用程序也会退出。因此,我们需要隐藏旧窗口而不是关闭它。
python tkinter 多个窗口
Python Tkinter 可以创建多个窗口。您可以使用 Toplevel() 函数创建新窗口。使用这个函数,您可以创建一个新的顶级窗口,它可以是一个独立的窗口或一个对话框。您可以在这个新窗口中添加各种小部件,例如按钮、标签、文本框等。要关闭窗口,您可以使用 destroy() 方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)