LISHUZUOXUN_yangjiang/BaseFrontend/page_manager.py

69 lines
1.8 KiB
Python

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_())