import sys from PyQt5.QtWidgets import QMainWindow, QStackedWidget, QApplication class PageManager(QMainWindow): """ 页面管理器。通过向该管理器中注册界面,在界面中实现跳转到其他界面,并且传输数据。 """ def __init__(self): super().__init__() # 页面栈 self.page_stack = QStackedWidget(self) self.page_stack.setStyleSheet( "background-color: #ffffff;" "border:none;" ) # 页面序号字典 self.page_dict = dict() # 向管理器中增加一个界面 def add_page(self, page_name, page): """ 向页面管理器中增加一个新的界面 :param page_name: 该页面的名称 :param page: 该页面对象 :return: """ # 注册该界面 self.page_stack.addWidget(page) self.page_dict[page_name] = page # 启动ui界面 def start_ui(self): """ 启动UI :return: """ self.setCentralWidget(self.page_stack) self.showMaximized() # self.showFullScreen() # 设置窗口全屏显示 def jump2(self, page_name, data): """ 用于其他页面中请求跳转到其他界面 :param page_name: 目标跳转界面名称 :param data: 附带的页面数据 :return: """ page = self.page_dict[page_name] # 更新页面数据 page.set_data(data) page.refresh() # 执行页面跳转 self.page_stack.setCurrentWidget(page) def back2page(self, page_name): pre_page = self.page_dict[page_name] # 执行页面跳转 self.page_stack.setCurrentWidget(pre_page) APP = QApplication(sys.argv) BASE_PAGE_TERMINAL = PageManager() # 终端页面管理器 def keep_ui(): sys.exit(APP.exec_())