0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-13 19:21:50 +02:00

fix: replace pyqtdarktheme by qdarkstyle, add 'apply_theme' function (in utils/colors.py)

This commit is contained in:
2024-07-10 13:28:58 +02:00
parent 02fce838db
commit 8308115f36
3 changed files with 30 additions and 4 deletions

View File

@ -1,10 +1,37 @@
import itertools
import re import re
from typing import Literal from typing import Literal
import numpy as np import numpy as np
import pyqtgraph as pg import pyqtgraph as pg
import qdarkstyle
from pydantic_core import PydanticCustomError from pydantic_core import PydanticCustomError
from qdarkstyle import DarkPalette, LightPalette
from qtpy.QtGui import QColor from qtpy.QtGui import QColor
from qtpy.QtWidgets import QApplication
CURRENT_THEME = "dark"
def get_theme_palette():
return DarkPalette if CURRENT_THEME == "dark" else LightPalette
def apply_theme(theme: Literal["dark", "light"]):
global CURRENT_THEME
CURRENT_THEME = theme
app = QApplication.instance()
# go through all pyqtgraph widgets and set background
children = itertools.chain.from_iterable(
top.findChildren(pg.GraphicsLayoutWidget) for top in app.topLevelWidgets()
)
for pg_widget in children:
pg_widget.setBackground("k" if theme == "dark" else "w")
# now define stylesheet according to theme and apply it
style = qdarkstyle.load_stylesheet(palette=get_theme_palette())
app.setStyleSheet(style)
class Colors: class Colors:

View File

@ -7,13 +7,13 @@ from typing import Literal, Optional
import numpy as np import numpy as np
import pyqtgraph as pg import pyqtgraph as pg
import qdarktheme
from pydantic import Field, ValidationError, field_validator from pydantic import Field, ValidationError, field_validator
from qtpy.QtCore import Signal as pyqtSignal from qtpy.QtCore import Signal as pyqtSignal
from qtpy.QtWidgets import QWidget from qtpy.QtWidgets import QWidget
from typeguard import typechecked from typeguard import typechecked
from bec_widgets.utils import BECConnector, ConnectionConfig, WidgetContainerUtils from bec_widgets.utils import BECConnector, ConnectionConfig, WidgetContainerUtils
from bec_widgets.utils.colors import apply_theme
from bec_widgets.widgets.figure.plots.image.image import BECImageShow, ImageConfig from bec_widgets.widgets.figure.plots.image.image import BECImageShow, ImageConfig
from bec_widgets.widgets.figure.plots.motor_map.motor_map import BECMotorMap, MotorMapConfig from bec_widgets.widgets.figure.plots.motor_map.motor_map import BECMotorMap, MotorMapConfig
from bec_widgets.widgets.figure.plots.plot_base import BECPlotBase, SubplotConfig from bec_widgets.widgets.figure.plots.plot_base import BECPlotBase, SubplotConfig
@ -670,9 +670,8 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
Args: Args:
theme(Literal["dark","light"]): The theme to set for the figure widget. theme(Literal["dark","light"]): The theme to set for the figure widget.
""" """
qdarktheme.setup_theme(theme)
self.setBackground("k" if theme == "dark" else "w")
self.config.theme = theme self.config.theme = theme
apply_theme(theme)
for plot in self.widget_list: for plot in self.widget_list:
plot.set_x_label(plot.plot_item.getAxis("bottom").label.toPlainText()) plot.set_x_label(plot.plot_item.getAxis("bottom").label.toPlainText())
plot.set_y_label(plot.plot_item.getAxis("left").label.toPlainText()) plot.set_y_label(plot.plot_item.getAxis("left").label.toPlainText())

View File

@ -19,7 +19,7 @@ dependencies = [
"isort~=5.13, >=5.13.2", # needed for bw-generate-cli "isort~=5.13, >=5.13.2", # needed for bw-generate-cli
"pydantic~=2.0", "pydantic~=2.0",
"pyqtgraph~=0.13", "pyqtgraph~=0.13",
"pyqtdarktheme~=2.1", "qdarkstyle>=3.2.2",
"qtconsole~=5.5, >=5.5.1", # needed for jupyter console "qtconsole~=5.5, >=5.5.1", # needed for jupyter console
"qtpy~=2.4", "qtpy~=2.4",
"pyte", # needed for vt100 console "pyte", # needed for vt100 console