AI_MMI_Analyser/app/core/theme_manager.py.PY

37 lines
2.0 KiB
Python

from PySide6.QtGui import QColor, QPalette
from PySide6.QtWidgets import QApplication
class ThemeManager:
"""애플리케이션 전체의 테마(Light/Dark)를 관리"""
LIGHT_THEME = {
"bg": "#FFFFFF", "fg": "#000000", "panel": "#F0F0F0",
"accent": "#0078D7", "border": "#CCCCCC", "text": "#333333"
}
DARK_THEME = {
"bg": "#1E1E1E", "fg": "#FFFFFF", "panel": "#2D2D30",
"accent": "#007ACC", "border": "#3E3E42", "text": "#D4D4D4"
}
@staticmethod
def apply_theme(app: QApplication, theme="dark"):
palette = QPalette()
colors = ThemeManager.DARK_THEME if theme == "dark" else ThemeManager.LIGHT_THEME
# 기본 팔레트 설정 (Qt 기본 위젯용)
# (상세 팔레트 설정 코드는 생략하고 스타일시트 위주로 적용)
# 공통 스타일시트 (Fusion 스타일 + 커스텀)
qss = f"""
QMainWindow {{ background-color: {colors['bg']}; color: {colors['text']}; }}
QWidget {{ background-color: {colors['bg']}; color: {colors['text']}; font-family: 'Malgun Gothic', 'Segoe UI'; font-size: 10pt; }}
QTabWidget::pane {{ border: 1px solid {colors['border']}; background: {colors['panel']}; }}
QTabBar::tab {{ background: {colors['bg']}; border: 1px solid {colors['border']}; padding: 8px 16px; margin-right: 2px; }}
QTabBar::tab:selected {{ background: {colors['accent']}; color: white; font-weight: bold; }}
QSplitter::handle {{ background-color: {colors['border']}; width: 2px; }}
QPushButton {{ background-color: {colors['panel']}; border: 1px solid {colors['border']}; padding: 6px 12px; border-radius: 4px; }}
QPushButton:hover {{ background-color: {colors['accent']}; color: white; }}
QStatusBar {{ background: {colors['panel']}; color: {colors['text']}; border-top: 1px solid {colors['border']}; }}
"""
app.setStyleSheet(qss)