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 theme

  • Theme.DARK: Dark theme

  • Theme.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 or red.

When the theme color changes, the config instance managed by qconfig will emit the themeColorChanged signal.