主题¶
主题模式¶
setTheme() 函数用于切换 PyQt-Fluent-Widgets 全部组件的亮暗主题。该函数接受下述值:
Theme.LIGHT:浅色主题Theme.DARK:深色主题Theme.AUTO:跟随系统主题。如果无法检测到系统的主题,将使用浅色主题。
当主题发生改变时,qconfig 管理的配置实例(也就是使用 qconfig.load() 方法传入的那个配置对象)将会发出 themeChanged 信号。
如果想在主题发生改变时,自动切换界面的样式,可以继承 StyleSheetBase 类并重写 path() 方法。假设有一个 MainWindow 类,它的 qss 文件路径为 app/resource/qss/light/main_window.qss 和 app/resource/qss/dark/main_window.qss,那么代码可以这么写:
from enum import Enum
from qfluentwidgets import StyleSheetBase, Theme, isDarkTheme, qconfig
class StyleSheet(StyleSheetBase, Enum):
""" Style sheet """
MAIN_WINDOW = "main_window"
def path(self, theme=Theme.AUTO):
theme = qconfig.theme if theme == Theme.AUTO else theme
return f"app/resource/qss/{theme.value.lower()}/{self.value}.qss"
class MainWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent=parent)
# apply style sheet to main window
StyleSheet.MAIN_WINDOW.apply(self)
主题色¶
setThemeColor() 函数用于修改全部组件的主题色。该函数接受三种类型的值:
QColorQt.GlobalColorstr:十六进制颜色字符串或者颜色名字,比如#0065d5或者red
当主题发生改变时,qconfig 管理的配置实例会发出 themeColorChanged 信号。