37 lines
2.0 KiB
Python
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) |