69 lines
1.8 KiB
Python
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_())
|