LISHUZUOXUN_yangjiang/LSZXPagesManagerLibrary/page_switcher.py

83 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class PageSwitcher(QMainWindow):
def __init__(self):
super(PageSwitcher, self).__init__()
self.tag_buttons = []
# 创建顶部按钮布局
# self.top_layout = QHBoxLayout()
# 创建页面切换容器
self.stacked_widget = QStackedWidget()
self.setCentralWidget(self.stacked_widget)
# 主布局
main_layout = QVBoxLayout()
# main_layout.addLayout(self.top_layout)
main_layout.addWidget(self.stacked_widget)
# 创建一个中心部件,并设置布局
self.central_widget = QWidget()
self.central_widget.setLayout(main_layout)
# 设置主窗口的中心部件
# self.setCentralWidget(central_widget)
# 添加页面page_widget、添加按钮page_name、把按钮和页面绑定关联点击按钮时切换页面
def add_page(self, page_widget, page_name):
self.stacked_widget.addWidget(page_widget)
tag_button = self.create_button(page_name)
self.tag_buttons.append(tag_button)
# 初始化时设置第一个按钮样式
first_button = self.tag_buttons[0]
self.change_button_style(first_button)
tag_button.mousePressEvent = lambda event, lbl=tag_button: self.clicked_reaction(event, lbl)
self.top_layout.addWidget(tag_button)
# 启动ui界面
def start_ui(self):
"""
启动UI
:return:
"""
self.setCentralWidget(self.central_widget)
self.showMaximized()
# self.showFullScreen() # 设置窗口全屏显示
# 按钮点击事件绑定切换后的页面
def clicked_reaction(self, event, label):
index = self.tag_buttons.index(label)
self.stacked_widget.setCurrentIndex(index)
for button in self.tag_buttons:
self.button_style(button)
self.change_button_style(label)
# 顶部按钮
def create_button(self, text):
button = QLabel(text)
button.setAlignment(Qt.AlignCenter)
self.button_style(button)
return button
def button_style(self, button):
button.setStyleSheet(
"font: 600 30px \"Microsoft YaHei UI\";"
"letter-spacing: 4px;"
"padding-top: 10px;"
"padding-bottom: 10px;"
"margin-left: 6px;"
"margin-right: 6px;"
)
def change_button_style(self, button):
button.setStyleSheet(
"font: 600 30px \"Microsoft YaHei UI\";"
"letter-spacing: 4px;"
"padding-top: 10px;"
"padding-bottom: 10px;"
"margin-left: 6px;"
"margin-right: 6px;"
"color: #409eff;"
)