Files
WQ_GUI/src/gui/STYLES_README.md
2026-04-08 15:25:08 +08:00

243 lines
8.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
水质参数反演分析系统 - UI样式系统文档
Modern UI Stylesheet System Documentation
================================================================================
1. 概述
------
本系统采用现代化的扁平设计风格,提供了一套完整的样式表和主题管理系统。
所有UI组件都遵循统一的设计规范确保整体的视觉一致性和用户体验。
2. 颜色系统
-----------
主要颜色定义在 ModernStylesheet.COLORS 中:
- main_bg (#F0F0F0):主窗口背景,浅灰色
- panel_bg (#FFFFFF):面板/容器背景,纯白色
- text_primary (#000000):主文字颜色,黑色
- text_secondary (#666666):辅助文字颜色,灰色
- border (#D0D0D0):边框颜色,浅灰
- border_light (#E8E8E8):浅边框颜色
- accent (#007BFF):强调色,蓝色
- success (#28A745):成功绿
- error (#DC3545):错误红
- warning (#FFC107):警告黄
- hover (#E8E8E8):悬停背景色
- selected (#0056B3):选中色
3. 按钮样式
-----------
系统提供了四种预定义的按钮样式:
a) 普通按钮normal
background-color: 白色
border: 1px 灰色边框
border-radius: 7px
用法: ModernStylesheet.get_button_stylesheet('normal')
b) 主按钮primary- 蓝色
background-color: 蓝色 (#007BFF)
color: 白色
border-radius: 7px
用法: ModernStylesheet.get_button_stylesheet('primary')
c) 成功按钮success- 绿色
background-color: 绿色 (#28A745)
color: 白色
border-radius: 7px
用法: ModernStylesheet.get_button_stylesheet('success')
常用于:独立运行、确认操作等
d) 危险按钮danger- 红色
background-color: 红色 (#DC3545)
color: 白色
border-radius: 7px
用法: ModernStylesheet.get_button_stylesheet('danger')
常用于:停止、删除操作等
示例代码:
---------
from src.gui.styles import ModernStylesheet
# 创建成功按钮
run_btn = QPushButton("运行")
run_btn.setStyleSheet(ModernStylesheet.get_button_stylesheet('success'))
# 创建危险按钮
stop_btn = QPushButton("停止")
stop_btn.setStyleSheet(ModernStylesheet.get_button_stylesheet('danger'))
4. 输入框样式
-------------
所有输入框QLineEdit, QComboBox, QSpinBox等都采用统一样式
- background-color: 白色
- border: 1px 灰色边框
- border-radius: 5-10px圆角
- 焦点时边框变为蓝色accent color
5. 分组框QGroupBox
----------------------
分组框采用简洁的设计:
- background-color: 白色
- border: 无or仅下边框1px 浅灰)
- border-radius: 0
- 内边距: 9px
6. 复选框和单选框
-----------------
复选框和单选框保持默认样式,具有以下特性:
- 大小: 16x16px
- 选中时蓝色背景accent color
- 边框: 1px 灰色
7. 应用样式表
--------------
主样式表通过 apply_stylesheet() 方法应用到整个应用:
self.setStyleSheet(ModernStylesheet.get_main_stylesheet())
专用样式表可按需应用:
# 工具栏样式
toolbar_widget.setStyleSheet(ModernStylesheet.get_toolbar_stylesheet())
# 边栏样式
sidebar_widget.setStyleSheet(ModernStylesheet.get_sidebar_stylesheet())
8. 布局特点
-----------
应用的主要布局特点:
a) 顶部工具栏
- 白色背景
- 下边框 1px 浅灰
- 包含logo、模块切换按钮、窗口控制按钮
b) 左侧导航栏(宽度:~280px
- 白色背景
- 右边框 1px 浅灰
- 包含步骤列表、运行/停止按钮
- 步骤列表支持选中状态显示
c) 右侧内容区
- 浅灰背景
- 包含标签页、日志区、进度条
- 标签页支持切换
d) 底部状态栏
- 白色背景
- 上边框 1px 浅灰
- 显示当前状态和进度信息
9. 自定义样式
--------------
如需为某个组件应用自定义样式,建议:
a) 简单修改(如颜色):
widget.setStyleSheet(f"background-color: {ModernStylesheet.COLORS['panel_bg']};")
b) 复杂修改:
添加新方法到 ModernStylesheet 类
@staticmethod
def get_custom_stylesheet():
return "..."
c) 一次性样式:
直接在widget.setStyleSheet中定义
注意:保持与整体风格的一致性
10. 最佳实践
--------------
✓ DO:
- 使用 ModernStylesheet 中的颜色常量
- 使用预定义的样式表方法
- 维持一致的间距和圆角半径
- 使用适当的按钮类型success/danger等
- 为交互元素提供hover和pressed状态反馈
✗ DON'T:
- 直接使用硬编码颜色值
- 混合不同的设计风格
- 过度使用渐变和阴影
- 忽视focus和disabled状态
- 使用过小或过大的字体
11. 响应式设计
---------------
系统支持基本的响应式布局:
- 导航栏最大宽度: 280px
- 内容区域自动调整
- 步骤面板自动滚动
12. 字体设置
-----------
主要字体:
- 界面标题Arial, 13-14pt, Bold
- 普通文本:系统默认, 11-12pt
- 等宽字体日志Courier New, 10pt, Monospace
13. 性能优化
-----------
- 样式表在应用启动时加载
- 避免频繁修改样式表
- 使用CSS类而非硬编码样式
- 合理使用selector优化渲染
14. 常见问题
-----------
Q: 如何改变全局字体大小?
A: 修改 ModernStylesheet 类中的样式表定义
Q: 如何添加新的按钮类型?
A: 在 ModernStylesheet 类中添加新方法
Q: 如何支持深色模式?
A: 创建新的样式类,定义深色配色方案
Q: 标签页标签栏消失了怎么办?
A: 检查QTabBar::tab的height设置确保高度大于0
================================================================================
更新历史:
- v1.0: 初始版本,实现现代化扁平设计风格
- v1.1: 改进导航栏和日志区域样式
- v1.2: 添加专用样式表方法(工具栏、边栏等)
================================================================================
"""
# 快速参考表
QUICK_REFERENCE = """
┌─ 快速参考 ─────────────────────────────────────────────────────────────┐
│ │
│ 按钮样式: │
│ 正常: ModernStylesheet.get_button_stylesheet('normal') │
│ 主要: ModernStylesheet.get_button_stylesheet('primary') │
│ 成功: ModernStylesheet.get_button_stylesheet('success') │
│ 危险: ModernStylesheet.get_button_stylesheet('danger') │
│ │
│ 颜色引用: │
│ ModernStylesheet.COLORS['main_bg'] # #F0F0F0 浅灰 │
│ ModernStylesheet.COLORS['panel_bg'] # #FFFFFF 白色 │
│ ModernStylesheet.COLORS['text_primary'] # #000000 黑色 │
│ ModernStylesheet.COLORS['accent'] # #007BFF 蓝色 │
│ ModernStylesheet.COLORS['success'] # #28A745 绿色 │
│ ModernStylesheet.COLORS['error'] # #DC3545 红色 │
│ │
│ 样式表应用: │
│ self.setStyleSheet(ModernStylesheet.get_main_stylesheet()) │
│ widget.setStyleSheet(ModernStylesheet.get_toolbar_stylesheet()) │
│ widget.setStyleSheet(ModernStylesheet.get_sidebar_stylesheet()) │
│ │
└───────────────────────────────────────────────────────────────────────┘
"""
if __name__ == "__main__":
print(QUICK_REFERENCE)