使用 Tkinter 制作多页面界面:顶部菜单跳转示例
以下是一个简单的示例代码,实现了一个拥有顶部菜单的界面,点击菜单可以跳转到下一个界面:
import tkinter as tk
class MainMenu(tk.Menu):
def __init__(self, parent):
super().__init__(parent)
self.parent = parent
self.add_command(label='Page 1', command=self.show_page1)
self.add_command(label='Page 2', command=self.show_page2)
def show_page1(self):
self.parent.show_page(Page1)
def show_page2(self):
self.parent.show_page(Page2)
class Page1(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
tk.Label(self, text='This is Page 1').pack()
class Page2(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
tk.Label(self, text='This is Page 2').pack()
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title('My App')
self.geometry('400x300')
self.menu = MainMenu(self)
self.config(menu=self.menu)
self.pages = {}
self.show_page(Page1)
def show_page(self, page_class):
page_name = page_class.__name__
if page_name not in self.pages:
self.pages[page_name] = page_class(self)
self.pages[page_name].pack(fill='both', expand=True)
if __name__ == '__main__':
app = App()
app.mainloop()
在这个例子中,我们定义了三个类:MainMenu、Page1、Page2。MainMenu 继承自 tkinter 的 Menu 类,作为顶部菜单,在构造函数中添加了两个菜单选项,分别绑定了点击事件。Page1 和 Page2 继承自 tkinter 的 Frame 类,作为两个页面的容器,在构造函数中添加了一个 Label,用于显示页面的内容。
我们的主程序是 App 类,继承自 tkinter 的 Tk 类,作为整个应用的入口。在构造函数中,我们设置了应用的标题和大小,创建了一个 MainMenu 实例,并将其作为应用的菜单,初始化了一个空的页面字典,然后调用 show_page 方法显示初始页面。
show_page 方法接受一个页面类作为参数,它首先检查页面是否已经存在于字典中,如果不存在则创建一个新的页面实例,并将其添加到字典中。最后,它调用 pack 方法将页面添加到应用的主窗口中。
运行这个程序,你会看到一个拥有顶部菜单的窗口,点击菜单可以切换不同的页面。这个例子只是一个简单的示例,你可以在此基础上进行扩展,实现更复杂的界面。
原文地址: https://www.cveoy.top/t/topic/ofhW 著作权归作者所有。请勿转载和采集!