- 创建了
style_constants.py:包含完整的设计令牌系统- 颜色系统:主色系、中性色系、语义化颜色、macOS系统色等
- 间距系统:基于8px网格的间距定义 (SPACING_XS 到 SPACING_3XL)
- 圆角系统:从小到胶囊形的统一圆角定义
- 字体系统:字体大小、行高、字体族定义
- 阴影系统:四级阴影效果定义
- 布局系统:组件尺寸、特殊配置等
- 创建了
style_utils.py:提供样式生成器函数create_menu_style(): 菜单样式生成器create_button_style(): 按钮样式生成器,支持多种类型和尺寸create_input_style(): 输入框样式生成器create_dialog_style(): 对话框样式生成器create_tag_color_style(): 标签颜色样式生成器- 快捷样式函数:primary_button(), danger_button() 等
- 创建了
css_constants.py:统一管理HTML/CSS样式- 代码高亮样式常量
- 主题样式模板生成器
- 预定义主题样式字典
- 样式工具函数和快捷样式函数
- 重构了
app_style.py:- 移除了重复的颜色、间距、字体等系统定义
- 导入了统一的样式常量
- 将硬编码样式替换为使用设计令牌
- 保持了向后兼容性
-
QuickPick面板 (
panel.py):- 菜单样式使用
create_menu_style() - 删除按钮样式使用
danger_button()
- 菜单样式使用
-
编辑对话框 (
edit_dialog.py):- 对话框样式使用
create_dialog_style() - 标签容器样式使用样式常量
- 所有硬编码颜色替换为常量引用
- 对话框样式使用
-
顶部按钮控制器 (
button_controller.py):- 所有工具按钮样式使用样式常量
- 菜单样式统一化
-
macOS按钮 (
macos_button.py):- 使用 macOS 系统色常量
- 尺寸使用统一的按钮配置
- 重构了
init_db.py和db/init_db.py:- 使用新的CSS样式常量系统
- 主题样式模板化
- 移除硬编码的CSS样式
# 颜色示例 - 包含详细注释
PRIMARY_50 = '#E8F4FD' # 最浅蓝色 - 用于背景高亮
PRIMARY_500 = '#2591FF' # 主蓝色 - 主要交互色和品牌色
NEUTRAL_700 = '#4D5358' # 主要文本 - 正文文本
# 间距示例 - 基于8px网格
SPACING_XS = 4 # 0.25rem - 最小间距
SPACING_SM = 8 # 0.5rem - 小间距
SPACING_MD = 12 # 0.75rem - 中等间距# 按钮样式生成器 - 支持类型和尺寸配置
create_button_style(button_type="primary", size="md")
create_button_style(button_type="danger", size="sm")
# 快捷样式函数
primary_button() # 主要按钮
danger_button() # 危险按钮# 主题样式生成
create_theme_style("light") # 浅色主题
create_theme_style("dark") # 深色主题
# 获取主题样式
get_theme_style("GitHub风格")# 原始硬编码样式
menu.setStyleSheet('''
QMenu {
background-color: white;
border: 1px solid #EBEEF2;
border-radius: 8px;
padding: 8px;
}
''')# 使用样式生成器
from app.preference.style_utils import create_menu_style
menu.setStyleSheet(create_menu_style())
# 或使用样式常量
menu.setStyleSheet(f'''
QMenu {{
background-color: {NEUTRAL_0};
border: 1px solid {NEUTRAL_200};
border-radius: {RADIUS_MD}px;
padding: {SPACING_SM}px;
}}
''')- 新增文件: 3个 (
style_constants.py,style_utils.py,css_constants.py) - 重构文件: 8个 (核心样式文件和组件文件)
- 受影响文件: 10+ 个
- 颜色值: 移除了约50个硬编码颜色值 (如 #EBEEF2, #2591FF 等)
- 间距值: 统一了约30个硬编码间距值
- 字体大小: 标准化了约15个字体大小定义
- CSS样式: 重构了约20个CSS样式块
- 颜色常量: 40+ 个 (包含详细注释)
- 间距常量: 7个 (基于8px网格)
- 字体常量: 12个 (大小、行高、字体族)
- 圆角常量: 5个 (从小圆角到胶囊形)
严格遵循Robin Williams四大设计原则:
- 语义化颜色: SUCCESS_500, WARNING_500, ERROR_500
- 状态区分: PRIMARY_50 (悬停), PRIMARY_600 (按压)
- 层次结构: NEUTRAL_700 (主文本), NEUTRAL_500 (次要文本)
- 统一间距: 基于8px网格的间距系统
- 一致尺寸: 标准化的按钮、输入框高度
- 网格对齐: SPACING_XS, SPACING_SM, SPACING_MD 递进式设计
- 设计令牌: 所有组件使用统一的颜色、间距定义
- 样式模式: 按钮、输入框、对话框等统一样式生成器
- 主题一致: 所有主题使用相同的样式结构
- 相关元素: 相关样式常量分组定义
- 功能聚合: 样式工具函数按功能归类
- 模块化: 样式系统按职责分离到不同模块
- 基于现有设计令牌扩展深色模式
- 自动主题切换功能
- 添加统一的过渡动画常量
- 创建动效样式生成器
- 添加断点系统常量
- 支持不同屏幕尺寸的样式适配
- 创建样式组件预览工具
- 自动化样式一致性测试
- 单一数据源: 所有样式配置集中管理
- 修改效率: 修改一个常量即可全局更新
- 一致性保障: 避免样式定义不一致的问题
- 快速原型: 使用样式生成器快速创建组件
- 代码复用: 样式工具函数降低重复代码
- 易于扩展: 新组件可直接使用现有样式系统
- 规范统一: 建立了完整的设计规范体系
- 品牌一致: 确保界面风格统一
- 专业品质: 提升应用的整体视觉品质
此次样式重构成功建立了MarkRender的完整设计令牌系统,将分散的硬编码样式统一收敛到preference目录下的样式模块中。通过创建样式常量、工具函数和CSS管理系统,实现了:
- ✅ 统一的样式管理: 所有样式配置集中管理
- ✅ 提升的可读性: 详细的颜色注释和语义化命名
- ✅ 增强的可维护性: 修改样式只需要更新常量定义
- ✅ 完善的复用机制: 样式生成器和快捷函数支持
- ✅ 专业的设计规范: 遵循设计原则的系统化实现
重构后的样式系统为MarkRender提供了坚实的设计基础,支持未来的功能扩展和界面优化!