python3的tkinter中页面跳转
时间: 2023-10-19 12:21:46 浏览: 93
页面跳转
在Tkinter中,可以使用Tkinter的Toplevel小部件来创建新的窗口,同时使用协议方法(protocol method)来捕获窗口关闭事件。可以使用Toplevel小部件来实现页面跳转的效果。
下面是一个简单的示例代码,实现了两个页面之间的跳转:
```
import tkinter as tk
class Page1(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.hi_there = tk.Button(self)
self.hi_there["text"] = "Go to Page 2"
self.hi_there["command"] = self.go_to_page2
self.hi_there.pack(side="top")
def go_to_page2(self):
self.master.switch_frame(Page2)
class Page2(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.hi_there = tk.Button(self)
self.hi_there["text"] = "Go to Page 1"
self.hi_there["command"] = self.go_to_page1
self.hi_there.pack(side="top")
def go_to_page1(self):
self.master.switch_frame(Page1)
class MyApp(tk.Tk):
def __init__(self):
super().__init__()
self.title("My App")
self.geometry("200x100")
self.switch_frame(Page1)
def switch_frame(self, frame_class):
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.pack()
if __name__ == "__main__":
app = MyApp()
app.mainloop()
```
在这个示例中,有两个页面:Page1和Page2。每个页面都是Tkinter的Frame小部件的子类,Frame小部件是一个容器,可以包含其他小部件。
MyApp是一个Tkinter的Tk小部件的子类,Tk小部件是一个顶层窗口,是整个GUI应用程序的根。
在MyApp的构造函数中,创建了Page1的实例,并调用switch_frame方法,将其显示在窗口中。
在switch_frame方法中,创建了新的页面实例,并将其显示在窗口中。如果之前存在其他页面实例,会先销毁它。
在Page1和Page2的构造函数中,创建了一个按钮,点击按钮可以跳转到另一个页面。
在按钮的回调函数中,调用了MyApp的switch_frame方法,将页面切换到另一个页面。
阅读全文