198 lines
4.6 KiB
Python
198 lines
4.6 KiB
Python
from PySide6.QtGui import QFont
|
|
# ====================== 样式宏定义 ======================
|
|
# 字体设置
|
|
FONT_PATH = "font/SourceHanSerifCN-Medium.ttf" # 指定字体文件路径
|
|
FONT_FAMILY = "Source Han Serif CN" # 字体家族名称
|
|
TITLE_FONT_SIZE = 12
|
|
CONTENT_FONT_SIZE = 11
|
|
BUTTON_FONT_SIZE = 11
|
|
|
|
# 颜色定义
|
|
PRIMARY_COLOR = "#2c3e50"
|
|
SECONDARY_COLOR = "#34495e"
|
|
ACCENT_COLOR = "#3498db"
|
|
SUCCESS_COLOR = "#2ecc71"
|
|
LIGHT_COLOR = "#ecf0f1"
|
|
DARK_COLOR = "#2c3e50"
|
|
TEXT_COLOR = "#2c3e50"
|
|
LIGHT_TEXT_COLOR = "#ecf0f1"
|
|
|
|
# 按钮样式
|
|
BUTTON_WIDTH = 100
|
|
BUTTON_HEIGHT = 34
|
|
BUTTON_RADIUS = 4
|
|
BUTTON_FONT_WEIGHT = QFont.Weight.Medium
|
|
|
|
BUTTON_STYLE = f"""
|
|
QPushButton {{
|
|
font-family: "{FONT_FAMILY}";
|
|
font-size: {BUTTON_FONT_SIZE}pt;
|
|
font-weight: {BUTTON_FONT_WEIGHT};
|
|
color: {TEXT_COLOR};
|
|
background-color: {LIGHT_COLOR};
|
|
border: 1px solid {SECONDARY_COLOR};
|
|
border-radius: {BUTTON_RADIUS}px;
|
|
padding: 6px 12px;
|
|
min-width: {BUTTON_WIDTH}px;
|
|
min-height: {BUTTON_HEIGHT}px;
|
|
}}
|
|
QPushButton:hover {{
|
|
background-color: #dfe6ec;
|
|
}}
|
|
QPushButton:pressed {{
|
|
background-color: #d0d7dd;
|
|
}}
|
|
"""
|
|
|
|
PRIMARY_BUTTON_STYLE = f"""
|
|
QPushButton {{
|
|
font-family: "{FONT_FAMILY}";
|
|
font-size: {BUTTON_FONT_SIZE + 1}pt;
|
|
font-weight: {BUTTON_FONT_WEIGHT};
|
|
color: {LIGHT_TEXT_COLOR};
|
|
background-color: {PRIMARY_COLOR};
|
|
border: 1px solid {DARK_COLOR};
|
|
border-radius: {BUTTON_RADIUS}px;
|
|
padding: 8px 16px;
|
|
}}
|
|
QPushButton:hover {{
|
|
background-color: #34495e;
|
|
}}
|
|
QPushButton:pressed {{
|
|
background-color: #2c3e50;
|
|
}}
|
|
"""
|
|
|
|
# 下拉框样式
|
|
COMBO_BOX_HEIGHT = 34
|
|
COMBO_BOX_STYLE = f"""
|
|
QComboBox {{
|
|
font-family: "{FONT_FAMILY}";
|
|
font-size: {CONTENT_FONT_SIZE}pt;
|
|
min-height: {COMBO_BOX_HEIGHT}px;
|
|
padding: 5px 10px;
|
|
border: 1px solid #bdc3c7;
|
|
border-radius: 4px;
|
|
}}
|
|
QComboBox::drop-down {{
|
|
width: 30px;
|
|
border-left: 1px solid #bdc3c7;
|
|
}}
|
|
"""
|
|
|
|
# 组框样式
|
|
GROUP_BOX_MIN_WIDTH = 380
|
|
GROUP_BOX_MIN_HEIGHT = 200
|
|
GROUP_BOX_SPACING = 15
|
|
GROUP_BOX_MARGINS = (15, 15, 15, 15)
|
|
GROUP_BOX_STYLE = f"""
|
|
QGroupBox {{
|
|
font-family: "{FONT_FAMILY}";
|
|
font-size: {TITLE_FONT_SIZE}pt;
|
|
font-weight: bold;
|
|
color: {PRIMARY_COLOR};
|
|
border: 1px solid #bdc3c7;
|
|
border-radius: 5px;
|
|
margin-top: 10px;
|
|
}}
|
|
QGroupBox::title {{
|
|
subcontrol-origin: margin;
|
|
left: 10px;
|
|
padding: 0 3px;
|
|
}}
|
|
"""
|
|
|
|
# 标签样式
|
|
LABEL_STYLE = f"""
|
|
QLabel {{
|
|
font-family: "{FONT_FAMILY}";
|
|
font-size: {CONTENT_FONT_SIZE}pt;
|
|
color: {TEXT_COLOR};
|
|
}}
|
|
"""
|
|
|
|
PATH_DISPLAY_STYLE = f"""
|
|
QLabel {{
|
|
font-family: "{FONT_FAMILY}";
|
|
font-size: {CONTENT_FONT_SIZE}pt;
|
|
background-color: {LIGHT_COLOR};
|
|
border: 1px solid #dee2e6;
|
|
border-radius: 4px;
|
|
padding: 10px;
|
|
min-height: 80px;
|
|
color: {TEXT_COLOR};
|
|
}}
|
|
"""
|
|
|
|
# 主窗口样式
|
|
WINDOW_MIN_WIDTH = 1000
|
|
WINDOW_MIN_HEIGHT = 720
|
|
MAIN_LAYOUT_SPACING = 20
|
|
MAIN_LAYOUT_MARGINS = (25, 25, 25, 25)
|
|
|
|
# 信息标签样式 (左侧固定标签)
|
|
INFO_LABEL_STYLE = f"""
|
|
QLabel {{
|
|
{LABEL_STYLE}
|
|
min-height: {COMBO_BOX_HEIGHT}px;
|
|
padding: 5px;
|
|
min-width: 100px;
|
|
}}
|
|
"""
|
|
|
|
# 信息显示样式 (右侧内容)
|
|
INFO_DISPLAY_STYLE = f"""
|
|
QLabel {{
|
|
{PATH_DISPLAY_STYLE}
|
|
min-height: {COMBO_BOX_HEIGHT}px;
|
|
border-radius: 4px;
|
|
}}
|
|
"""
|
|
|
|
# 分隔线样式
|
|
SEPARATOR_STYLE = """
|
|
QFrame {
|
|
border: 1px solid #dee2e6;
|
|
margin: 10px 0;
|
|
}
|
|
"""
|
|
|
|
# 等待提示样式
|
|
WAITING_LABEL_STYLE = f"""
|
|
QLabel {{
|
|
{LABEL_STYLE}
|
|
font-size: {TITLE_FONT_SIZE}pt;
|
|
qproperty-alignment: AlignCenter;
|
|
}}
|
|
"""
|
|
|
|
CHECKBOX_SIZE = 16 # 复选框大小
|
|
CHECKBOX_MARGIN = 4 # 边距
|
|
|
|
# 基础CheckBox样式
|
|
CHECKBOX_STYLE = f"""
|
|
QCheckBox {{
|
|
font-family: "{FONT_FAMILY}";
|
|
font-size: {CONTENT_FONT_SIZE}pt;
|
|
color: {TEXT_COLOR};
|
|
spacing: 8px;
|
|
padding: {CHECKBOX_MARGIN}px;
|
|
}}
|
|
QCheckBox::indicator {{
|
|
width: {CHECKBOX_SIZE}px;
|
|
height: {CHECKBOX_SIZE}px;
|
|
}}
|
|
"""
|
|
|
|
# 主色调CheckBox
|
|
PRIMARY_CHECKBOX_STYLE = f"""
|
|
{CHECKBOX_STYLE}
|
|
QCheckBox::indicator {{
|
|
border: 1px solid {PRIMARY_COLOR};
|
|
border-radius: 3px;
|
|
}}
|
|
QCheckBox::indicator:checked {{
|
|
background-color: {PRIMARY_COLOR};
|
|
image: url(:/icons/check_white.svg);
|
|
}}
|
|
""" |