You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.7 KiB
44 lines
1.7 KiB
## 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:
|
|
|
|
```python
|
|
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, `qconfig` will emit the `themeColorChanged` signal. |