# 主题支持说明 ## 概述 LocalFlow 设置对话框现在完全支持暗色和亮色主题,并能自动适配系统主题设置。 ## 自动主题检测 设置对话框使用智能算法自动检测当前应用的主题: ```python def _detect_dark_theme(self): """检测是否为暗色主题""" palette = QApplication.palette() window_color = palette.color(QPalette.Window) # 计算窗口背景色的平均亮度 brightness = (window_color.red() + window_color.green() + window_color.blue()) / 3 # 亮度小于128判定为暗色主题 return brightness < 128 ``` ## 主题配色方案 ### 暗色主题(Dark Theme) 优化的暗色配色,舒适护眼: | 元素 | 颜色代码 | 说明 | |------|---------|------| | 对话框背景 | `#1e1e1e` | 深灰色主背景 | | 文字颜色 | `#e0e0e0` | 浅灰色文字 | | 组框背景 | `#2d2d2d` | 中深灰色 | | 边框颜色 | `#3f3f3f` | 深灰边框 | | 输入框背景 | `#2d2d2d` | 深色输入框 | | 只读输入框 | `#252525` | 更深的只读色 | | 主按钮 | `#0e639c` | 深蓝色按钮 | | 按钮悬停 | `#1177bb` | 亮蓝色悬停 | | 按钮按下 | `#0d5689` | 更深蓝色 | | 禁用按钮 | `#3f3f3f` | 深灰禁用 | | 代码框 | `#252525` | 深色代码背景 | | 成功状态 | `#4ec9b0` | 青绿色 | | 错误状态 | `#f48771` | 浅红色 | | 进度条 | `#0e639c` | 蓝色进度 | ### 亮色主题(Light Theme) 清爽明亮的配色方案: | 元素 | 颜色代码 | 说明 | |------|---------|------| | 对话框背景 | `#f5f5f5` | 浅灰色主背景 | | 文字颜色 | `#000000` | 黑色文字 | | 组框背景 | `#ffffff` | 白色背景 | | 边框颜色 | `#cccccc` | 灰色边框 | | 输入框背景 | `#ffffff` | 白色输入框 | | 只读输入框 | `#f0f0f0` | 浅灰只读色 | | 主按钮 | `#007ACC` | 标准蓝色 | | 按钮悬停 | `#005a9e` | 深蓝悬停 | | 按钮按下 | `#004578` | 更深蓝色 | | 禁用按钮 | `#cccccc` | 灰色禁用 | | 代码框 | `#fafafa` | 浅色代码背景 | | 成功状态 | `#28a745` | 标准绿色 | | 错误状态 | `#dc3545` | 标准红色 | | 进度条 | `#007ACC` | 蓝色进度 | ## 主题适配组件 所有 UI 组件都完美适配两种主题: ### 适配的控件 - ✅ QDialog(对话框) - ✅ QGroupBox(分组框) - ✅ QLabel(标签) - ✅ QLineEdit(输入框) - ✅ QPushButton(按钮) - ✅ QTextEdit(文本编辑器) - ✅ QProgressBar(进度条) ### 状态样式 - ✅ 正常状态 - ✅ 悬停状态(hover) - ✅ 按下状态(pressed) - ✅ 禁用状态(disabled) - ✅ 只读状态(read-only) ## 使用示例 ### 在主应用中使用 ```python from src.dialogs.settings_dialog import SettingsDialog # 对话框会自动检测并应用当前主题 dialog = SettingsDialog(self) dialog.exec() ``` ### 测试不同主题 ```python # 使用测试脚本 python test_themes.py ``` 测试脚本提供了: 1. **测试亮色主题**按钮 - 立即切换到亮色主题 2. **测试暗色主题**按钮 - 立即切换到暗色主题 ## 设计原则 ### 暗色主题设计 - **对比度**:保持足够的文字对比度(WCAG AA级) - **眩光控制**:避免纯黑或纯白,使用柔和的深灰色 - **色彩和谐**:使用低饱和度的强调色 - **视觉层次**:通过细微的明度变化区分层次 ### 亮色主题设计 - **清晰度**:高对比度确保文字清晰可读 - **空间感**:白色和浅灰色营造开阔感 - **专业性**:使用标准的蓝色和绿色作为强调色 - **一致性**:与系统默认样式保持协调 ## 兼容性保证 ### 操作系统 - ✅ Windows 10/11(支持系统暗色模式) - ✅ macOS(支持 Dark Mode) - ✅ Linux(支持 GTK/Qt 主题) ### Qt 版本 - 最低要求:PySide6 6.0+ - 推荐版本:PySide6 6.5+ ### 主题切换 - 自动跟随系统主题(如果系统支持) - 支持应用内手动切换 - 实时生效,无需重启 ## 技术实现细节 ### 样式表结构 ```python def _apply_styles(self): """根据主题应用样式""" if self.is_dark_theme: # 暗色主题样式表 self.setStyleSheet("""...""") else: # 亮色主题样式表 self.setStyleSheet("""...""") ``` ### 动态颜色更新 某些状态标签的颜色会根据主题动态设置: ```python if self.is_dark_theme: self.status_label.setStyleSheet("color: #4ec9b0; font-weight: bold;") else: self.status_label.setStyleSheet("color: #28a745; font-weight: bold;") ``` ## 最佳实践 1. **响应系统变化**:应用应该能响应系统主题变化(未来功能) 2. **保持一致性**:所有新增的 UI 组件都应遵循相同的主题规范 3. **测试两种主题**:确保在两种主题下都测试过功能 4. **避免硬编码颜色**:使用样式表而不是代码中硬编码颜色 ## 未来改进 - [ ] 支持更多主题预设(如高对比度主题) - [ ] 实时响应系统主题变化 - [ ] 主题配置持久化 - [ ] 自定义主题编辑器 - [ ] 主题导入/导出功能 --- **主题系统完整且稳定,为用户提供最佳视觉体验!** ✨