tkinter实现页面切换例子
时间: 2023-10-19 17:07:22 浏览: 129
好的,这里是一个tkinter实现页面切换的例子:
```python
import tkinter as tk
class Page1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label = tk.Label(self, text="This is Page 1", font=("Arial", 18))
label.pack(pady=10, padx=10)
button = tk.Button(self, text="Go to Page 2", command=lambda: controller.show_page(Page2))
button.pack()
class Page2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label = tk.Label(self, text="This is Page 2", font=("Arial", 18))
label.pack(pady=10, padx=10)
button = tk.Button(self, text="Go to Page 1", command=lambda: controller.show_page(Page1))
button.pack()
class MainController(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.pages = {}
for F in (Page1, Page2):
page = F(container, self)
self.pages[F] = page
page.grid(row=0, column=0, sticky="nsew")
self.show_page(Page1)
def show_page(self, page):
self.pages[page].tkraise()
app = MainController()
app.mainloop()
```
这个例子中,Page1和Page2是两个不同的页面,它们都继承了tkinter的Frame类。MainController是主控制器,它包含了所有的页面,并且负责进行页面切换。
在每个页面中,我们可以添加任意的控件。我们可以定义按钮、标签、文本框等等,这些控件都可以和用户进行交互。在Page1和Page2中,我定义了一个按钮和一个标签。
主控制器中,我们首先创建了一个Frame容器,用来放置所有的页面。我们将所有的页面对象存储在self.pages字典中,这个字典的键是页面的类名,值是页面对象。我们使用一个for循环,将所有的页面对象添加到这个容器中,并且将它们都放置在同一个网格中。
最后,我们通过调用show_page方法来显示指定的页面。这个方法接受一个页面的类名作为参数,然后将这个页面的对象提取出来,调用tkraise方法将它显示在最上面。
阅读全文