qss
This commit is contained in:
		@@ -4,26 +4,32 @@ from PySide6.QtCore import Qt
 | 
			
		||||
 | 
			
		||||
from codes.common import clibs
 | 
			
		||||
from codes.common.signal_bus import signal_bus
 | 
			
		||||
from codes.common.qss_reloader import qss_reloader
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SListWidget(QListWidget):
 | 
			
		||||
    def __init__(self, parent=None):
 | 
			
		||||
        super().__init__(parent)
 | 
			
		||||
 | 
			
		||||
        self.predos()
 | 
			
		||||
        self.pre_do()
 | 
			
		||||
        self.init_ui()
 | 
			
		||||
        self.setup_slot()
 | 
			
		||||
        self.post_do()
 | 
			
		||||
 | 
			
		||||
    def predos(self):
 | 
			
		||||
    def pre_do(self):
 | 
			
		||||
        ...
 | 
			
		||||
 | 
			
		||||
    def init_ui(self):
 | 
			
		||||
        self.setObjectName("SListWidget")
 | 
			
		||||
        self.setMinimumWidth(150)
 | 
			
		||||
        for item in clibs.listW_items:
 | 
			
		||||
            _ = QListWidgetItem(item)
 | 
			
		||||
            _.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
 | 
			
		||||
            self.addItem(_)
 | 
			
		||||
 | 
			
		||||
    def post_do(self):
 | 
			
		||||
        qss_reloader.register(clibs.qss_list_widget, self)
 | 
			
		||||
        self.setup_slot()
 | 
			
		||||
 | 
			
		||||
    def setup_slot(self):
 | 
			
		||||
        self.itemClicked.connect(self.item_clicked)
 | 
			
		||||
        signal_bus.stacked_page_switch_setting.connect(self.qa_hide)
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@ class SStackedWidget(QStackedWidget):
 | 
			
		||||
        self.page_list = {"w01_setting": W01Setting(), "w08_log": W08Log(), "w09_about": W09About(), "w10_practical": W10Practical(), "w20_efficiency": W20Efficiency(), "w30_financial": W30Financial()}
 | 
			
		||||
 | 
			
		||||
    def init_ui(self):
 | 
			
		||||
        self.setObjectName("SStackedWidget")
 | 
			
		||||
        # stacked widget  1x: 10为一级按钮页,其余为二级按钮页,2-9同理 | 0x. 日志/设置/关于等页面
 | 
			
		||||
        for page_id, widget in self.page_list.items():
 | 
			
		||||
            widget.setObjectName(page_id)
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,25 @@
 | 
			
		||||
from PySide6.QtWidgets import QStatusBar
 | 
			
		||||
from PySide6.QtGui import QAction, QIcon
 | 
			
		||||
from PySide6.QtCore import QSize
 | 
			
		||||
 | 
			
		||||
from codes.common import clibs
 | 
			
		||||
from codes.common.signal_bus import signal_bus
 | 
			
		||||
from codes.common.qss_reloader import qss_reloader
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SStatusBar(QStatusBar):
 | 
			
		||||
    def __init__(self, parent=None):
 | 
			
		||||
        super().__init__(parent)
 | 
			
		||||
        self.pre_do()
 | 
			
		||||
        self.init_ui()
 | 
			
		||||
        self.post_do()
 | 
			
		||||
 | 
			
		||||
    def pre_do(self):
 | 
			
		||||
        ...
 | 
			
		||||
 | 
			
		||||
    def init_ui(self):
 | 
			
		||||
        self.setObjectName("SStatusBar")
 | 
			
		||||
        ...
 | 
			
		||||
 | 
			
		||||
    def post_do(self):
 | 
			
		||||
        qss_reloader.register(clibs.qss_statusbar, self)
 | 
			
		||||
 
 | 
			
		||||
@@ -4,47 +4,34 @@ from PySide6.QtCore import QSize
 | 
			
		||||
 | 
			
		||||
from codes.common import clibs
 | 
			
		||||
from codes.common.signal_bus import signal_bus
 | 
			
		||||
from codes.common.qss_reloader import qss_reloader
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SToolBar(QToolBar):
 | 
			
		||||
    def __init__(self, parent=None):
 | 
			
		||||
        super().__init__(parent)
 | 
			
		||||
        self.predos()
 | 
			
		||||
        self.pre_do()
 | 
			
		||||
        self.init_ui()
 | 
			
		||||
        self.setup_slot()
 | 
			
		||||
        self.post_do()
 | 
			
		||||
 | 
			
		||||
    def predos(self):
 | 
			
		||||
    def pre_do(self):
 | 
			
		||||
        ...
 | 
			
		||||
 | 
			
		||||
    def init_ui(self):
 | 
			
		||||
        self.setObjectName("SToolBar")
 | 
			
		||||
        # switch
 | 
			
		||||
        self.on_icon  = QIcon(f"{clibs.base_path}/assets/media/switch_on.png")   # 开状态图标
 | 
			
		||||
        self.off_icon = QIcon(f"{clibs.base_path}/assets/media/switch_off.png")  # 关状态图标
 | 
			
		||||
        self.on_icon  = QIcon(clibs.on_icon)   # 开状态图标
 | 
			
		||||
        self.off_icon = QIcon(clibs.off_icon)  # 关状态图标
 | 
			
		||||
        self.ac_switch = QAction(self.on_icon, "", self)
 | 
			
		||||
        self.ac_switch.setMenuRole(QAction.MenuRole.NoRole)
 | 
			
		||||
        self.ac_switch.setStatusTip("Switch side bar")
 | 
			
		||||
        self.ac_switch.setToolTip("Ctrl+Alt+T")
 | 
			
		||||
        self.ac_switch.setCheckable(True)          # 二态
 | 
			
		||||
        self.ac_switch.setCheckable(True)
 | 
			
		||||
        self.ac_switch.setChecked(True)
 | 
			
		||||
        self.ac_switch.setObjectName("acSwitch")
 | 
			
		||||
        self.setIconSize(QSize(30, 30))  # ← 一行决定图标像素
 | 
			
		||||
        self.setIconSize(QSize(30, 30))
 | 
			
		||||
        self.addAction(self.ac_switch)
 | 
			
		||||
        btn = self.widgetForAction(self.ac_switch)  # 取出实际 QToolButton
 | 
			
		||||
        btn.setStyleSheet("""
 | 
			
		||||
            QToolButton {
 | 
			
		||||
                background: transparent;
 | 
			
		||||
                border: none;
 | 
			
		||||
                outline: none;
 | 
			
		||||
            }
 | 
			
		||||
            /* 所有伪状态都透明,不让 Qt 画实心矩形 */
 | 
			
		||||
            QToolButton::hover,
 | 
			
		||||
            QToolButton::pressed,
 | 
			
		||||
            QToolButton::checked {
 | 
			
		||||
                background: transparent;
 | 
			
		||||
                border: none;
 | 
			
		||||
                outline: none;
 | 
			
		||||
            }
 | 
			
		||||
        """)
 | 
			
		||||
        btn.setObjectName("ac_switch")
 | 
			
		||||
 | 
			
		||||
        # homepage
 | 
			
		||||
        self.ac_homepage = QAction()
 | 
			
		||||
@@ -78,6 +65,10 @@ class SToolBar(QToolBar):
 | 
			
		||||
        self.ac_about.setText("关于")
 | 
			
		||||
        self.addAction(self.ac_about)
 | 
			
		||||
 | 
			
		||||
    def post_do(self):
 | 
			
		||||
        qss_reloader.register(clibs.qss_toolbar, self)
 | 
			
		||||
        self.setup_slot()
 | 
			
		||||
 | 
			
		||||
    def setup_slot(self):
 | 
			
		||||
        self.ac_switch.toggled.connect(self.ac_sw)
 | 
			
		||||
        self.ac_homepage.triggered.connect(self.ac_hp)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user