diff options
Diffstat (limited to 'ui/main_window.py')
| -rw-r--r-- | ui/main_window.py | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/ui/main_window.py b/ui/main_window.py index 07ab0b2..d7c297f 100644 --- a/ui/main_window.py +++ b/ui/main_window.py @@ -13,7 +13,7 @@ from PyQt6.QtWidgets import ( QAbstractSpinBox, QComboBox, QMenu, ) from PyQt6.QtCore import Qt, QTimer, QObject, QEvent, QRect, QByteArray, pyqtSignal, pyqtSlot -from PyQt6.QtGui import QPainter, QColor, QFont, QAction +from PyQt6.QtGui import QPainter, QColor, QFont, QAction, QPalette import logging import base64 import os @@ -822,8 +822,39 @@ class MainWindow(QMainWindow): if os.path.exists(qss_file): with open(qss_file) as f: QApplication.instance().setStyleSheet(f.read()) + self._apply_palette(theme) self._chart.set_theme(theme) + def _apply_palette(self, theme: str): + """QSS alone doesn't reach every Qt-drawn pixel — a splitter/dock + separator's grip-dot decoration, a QMenu's checkmark tick, etc. are + drawn from the app's QPalette, not stylesheet background-color. + Without ever setting one, those stay Qt's default light palette + regardless of the dark stylesheet, showing up as stray white dots/ + slivers on top of otherwise-correctly-dark widgets.""" + app = QApplication.instance() + if theme == "dark": + pal = QPalette() + pal.setColor(QPalette.ColorRole.Window, QColor("#0b0e13")) + pal.setColor(QPalette.ColorRole.WindowText, QColor("#c7d2fe")) + pal.setColor(QPalette.ColorRole.Base, QColor("#111620")) + pal.setColor(QPalette.ColorRole.AlternateBase, QColor("#161d2e")) + pal.setColor(QPalette.ColorRole.Text, QColor("#c7d2fe")) + pal.setColor(QPalette.ColorRole.Button, QColor("#161d2e")) + pal.setColor(QPalette.ColorRole.ButtonText, QColor("#c7d2fe")) + pal.setColor(QPalette.ColorRole.Highlight, QColor("#3b82f6")) + pal.setColor(QPalette.ColorRole.HighlightedText, QColor("#0b0e13")) + pal.setColor(QPalette.ColorRole.ToolTipBase, QColor("#161d2e")) + pal.setColor(QPalette.ColorRole.ToolTipText, QColor("#c7d2fe")) + pal.setColor(QPalette.ColorRole.Light, QColor("#2a3558")) + pal.setColor(QPalette.ColorRole.Midlight, QColor("#2a3558")) + pal.setColor(QPalette.ColorRole.Dark, QColor("#060810")) + pal.setColor(QPalette.ColorRole.Mid, QColor("#1c2540")) + pal.setColor(QPalette.ColorRole.Shadow, QColor("#000000")) + app.setPalette(pal) + else: + app.setPalette(app.style().standardPalette()) + def _apply_settings_on_startup(self): self._apply_theme(self._settings.get("theme", "dark")) self.engine._interval = self._settings.get("poll_ms", 100) / 1000.0 |
