Python的界面美化庫 QDarkStyleSheet
- 1、官網先看效果
- 2、github地址
- 3、動態切換主題用法
- 效果
- 代碼
1、官網先看效果
2、github地址
https://github.com/ColinDuquesnoy/QDarkStyleSheet?tab=readme-ov-file
https://qdarkstylesheet.readthedocs.io/en/latest/screenshots.html
3、動態切換主題用法
其實就一句話sheet = qdarkstyle.load_stylesheet(qt_api='pyside6', palette=DarkPalette())
效果
代碼
import sys
import qdarkstyle
from qdarkstyle.light.palette import LightPalette
from qdarkstyle.dark.palette import DarkPalette
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout,QGridLayout, QLabel, QLineEdit, QTextEdit, QComboBox,QSpinBox, QCheckBox, QRadioButton, QSlider, QDateEdit,QPushButton, QToolButton, QProgressBar, QListWidget,QGroupBox, QTabWidget, QMainWindow
)class RichDemo(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("控件大觀園")self.resize(700, 600)central = QWidget()main = QVBoxLayout()central.setLayout(main)self.setCentralWidget(central)# 主布局# ---------------- 頂部工具欄 ----------------tool_bar = QHBoxLayout()tool_bar.addWidget(QLabel("搜索:"))tool_bar.addWidget(QLineEdit(placeholderText="關鍵字..."))tool_bar.addWidget(QToolButton(text="🔍"))main.addLayout(tool_bar)# ---------------- 中間兩列 ----------------mid = QHBoxLayout()# 左列:輸入/選擇區left = QVBoxLayout()left.addWidget(QLabel("用戶信息"))left.addWidget(QLineEdit(placeholderText="姓名"))left.addWidget(QComboBox())left.itemAt(2).widget().addItems(["北京", "上海", "廣州"])left.addWidget(QSpinBox())left.itemAt(3).widget().setRange(1, 120)# 日期left.addWidget(QLabel("生日"))left.addWidget(QDateEdit(calendarPopup=True))# 復選 & 單選box = QGroupBox("偏好")v2 = QVBoxLayout(box)v2.addWidget(QCheckBox("推送通知"))v2.addWidget(QRadioButton("深色"))v2.addWidget(QRadioButton("亮色"))left.addWidget(box)# 滑塊left.addWidget(QLabel("亮度"))left.addWidget(QSlider(Qt.Horizontal))mid.addLayout(left)# 右列:展示區right = QVBoxLayout()right.addWidget(QLabel("實時日志"))right.addWidget(QTextEdit(readOnly=True))right.addWidget(QProgressBar(value=66))right.addWidget(QListWidget())for i in range(5):right.itemAt(3).widget().addItem(f"任務-{i}")mid.addLayout(right)main.addLayout(mid)# ---------------- 底部按鈕 ----------------btn_bar = QHBoxLayout()btn_bar.addStretch()btn_bar.addWidget(QPushButton("保存"))btn_bar.addWidget(QPushButton("取消"))# 默認深色self.is_dark = True# 按鈕:點擊切換self.toggle_btn = QPushButton("切換到淺色")self.toggle_btn.clicked.connect(self.toggle_theme)btn_bar.addWidget(self.toggle_btn)main.addLayout(btn_bar)self.apply_theme()def apply_theme(self):"""根據當前狀態應用主題"""if self.is_dark:sheet = qdarkstyle.load_stylesheet(qt_api='pyside6', palette=DarkPalette())self.toggle_btn.setText("切換到淺色")else:sheet = qdarkstyle.load_stylesheet(qt_api='pyside6', palette=LightPalette())self.toggle_btn.setText("切換到深色")QApplication.instance().setStyleSheet(sheet)def toggle_theme(self):"""切換主題并重新應用"""self.is_dark = not self.is_darkself.apply_theme()if __name__ == "__main__":app = QApplication([])window = RichDemo()window.show()sys.exit(app.exec())