Theme¶
Theme mode¶
You can use the setTheme()
method to switch the light/dark theme of PyQt-Fluent-Widgets. The parameter of setTheme()
accepts the following three values:
Theme.LIGHT
: Light themeTheme.DARK
: Dark themeTheme.AUTO
: Follow system theme. If the system theme cannot be detected, the light theme will be used.
When the theme changes, the config instance managed by qconfig
(i.e., the config object passed in using the qconfig.load()
method) will emit the themeChanged
signal.
If you want to automatically switch the interface style when the theme changes, you can inherit StyleSheetBase
and override the path()
method. Suppose you have a MainWindow
class and its qss file paths are app/resource/qss/light/main_window.qss
and app/resource/qss/dark/main_window.qss
, the code can be written like this:
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)
Theme color¶
You can use setThemeColor()
method to change the theme color of PyQt-Fluent-Widgets. This method accepts the following three types of parameters:
QColor
Qt.GlobalColor
str
: Hex color strings or color names, such as#0065d5
orred
.
When the theme color changes, the config instance managed by qconfig
will emit the themeColorChanged
signal.