tkinter实现页面切换代码
时间: 2023-10-19 19:10:52 浏览: 163
以下是一个简单的基于tkinter实现页面切换的代码示例:
```python
import tkinter as tk
class MainPage(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.master = master
self.initUI()
def initUI(self):
tk.Label(self, text="This is the main page").pack()
btn1 = tk.Button(self, text="Switch to Page 1", command=self.showPage1)
btn1.pack(pady=5)
btn2 = tk.Button(self, text="Switch to Page 2", command=self.showPage2)
btn2.pack(pady=5)
def showPage1(self):
self.master.switch_frame(Page1)
def showPage2(self):
self.master.switch_frame(Page2)
class Page1(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.master = master
self.initUI()
def initUI(self):
tk.Label(self, text="This is Page 1").pack()
btn_back = tk.Button(self, text="Back to Main Page", command=self.showMainPage)
btn_back.pack(pady=5)
def showMainPage(self):
self.master.switch_frame(MainPage)
class Page2(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.master = master
self.initUI()
def initUI(self):
tk.Label(self, text="This is Page 2").pack()
btn_back = tk.Button(self, text="Back to Main Page", command=self.showMainPage)
btn_back.pack(pady=5)
def showMainPage(self):
self.master.switch_frame(MainPage)
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.title("Page Switching Example")
self.geometry("400x300")
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
self.frames = {}
for F in [MainPage, Page1, Page2]:
frame = F(container)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.switch_frame(MainPage)
def switch_frame(self, frame_class):
frame = self.frames[frame_class]
frame.tkraise()
if __name__ == "__main__":
app = App()
app.mainloop()
```
在这个示例中,我们定义了一个`App`类,它用于创建主窗口。在主窗口里面,我们创建了三个不同的`Frame`类: `MainPage`, `Page1`和`Page2`。主窗口默认显示`MainPage`,当点击按钮时,可以将当前窗口切换为`Page1`或`Page2`。
每个`Frame`类都有一个`initUI()`方法,用于初始化它们的界面。在`MainPage`中,我们创建了两个按钮,每个按钮分别切换到`Page1`和`Page2`。在`Page1`和`Page2`中,我们只创建了一个按钮,用于返回到主页。
`switch_frame()`方法用于切换窗口,它接受一个`frame_class`参数,表示要切换到哪个窗口。在这个方法里,我们先通过`frame_class`获取对应的`Frame`实例,再调用`tkraise()`方法将其显示出来。
这是一种基本的实现方式,实际上,通过使用多种tkinter布局方式,可以实现更加复杂的页面切换效果。
阅读全文
相关推荐
![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)
![](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)