项目初始化 - 创建完整项目结构(src/, data/, docs/, examples/, tests/) - 配置requirements.txt依赖 - 创建.gitignore P0基础框架 - 数据库模型:Record模型,6种分类类型 - 配置管理:YAML配置,支持AI/OCR/云存储/UI配置 - OCR模块:PaddleOCR本地识别,支持云端扩展 - AI模块:支持OpenAI/Claude/通义/Ollama,6种分类 - 存储模块:完整CRUD,搜索,统计,导入导出 - 主窗口框架:侧边栏导航,米白配色方案 - 图片处理:截图/剪贴板/文件选择/图片预览 - 处理流程整合:OCR→AI→存储串联,Markdown展示,剪贴板复制 - 分类浏览:卡片网格展示,分类筛选,搜索,详情查看 技术栈 - PyQt6 + SQLAlchemy + PaddleOCR + OpenAI/Claude SDK - 共47个Python文件,4000+行代码 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.9 KiB
5.9 KiB
P0-6: 主窗口框架 - 实现总结
任务完成状态
✅ 已完成所有任务
实现内容
1. 主窗口实现 (src/gui/main_window.py)
核心类
-
MainWindow: 主窗口类- 窗口大小:1200x800(默认),最小 1000x700
- 包含侧边栏和主内容区域
- 四个导航页面:截图处理、分类浏览、批量上传、设置
-
NavigationButton: 导航按钮类- 支持图标和文本
- 悬停和选中状态
功能模块
侧边栏
- 应用标题 "CutThenThink"
- 四个导航按钮
- 📷 截图处理
- 📁 分类浏览
- ☁️ 批量上传
- ⚙️ 设置
- 版本号显示
主内容区域
- 使用
QStackedWidget实现页面切换 - 每个页面都有独立的标题和内容卡片
- 设置页面使用滚动区域以支持更多配置项
2. 颜色方案 (src/gui/styles/colors.py)
颜色类别
-
主色调 - 米白色系
background_primary: #FAF8F5(主背景)background_secondary: #F0ECE8(次要背景)background_card: #FFFFFF(卡片背景)
-
文字颜色
text_primary: #2C2C2C(主要文字)text_secondary: #666666(次要文字)text_disabled: #999999(禁用文字)text_hint: #B8B8B8(提示文字)
-
强调色 - 温暖棕色系
accent_primary: #8B6914(主要强调 - 金棕)accent_secondary: #A67C52(次要强调 - 驼色)accent_hover: #D4A574(悬停色)
-
功能色
success: #6B9B3A(橄榄绿)warning: #D9A518(金黄)error: #C94B38(铁锈红)info: #5B8FB9(钢蓝)
-
UI 元素颜色
- 边框、按钮、输入框、侧边栏等专用颜色
类和函数
ColorScheme: 颜色方案数据类COLORS: 全局颜色方案实例get_color(name): 获取颜色值
3. 主题样式表 (src/gui/styles/theme.py)
样式覆盖范围
完整的 Qt 部件样式表,包括:
- 主窗口、侧边栏
- 按钮(主要/次要)
- 输入框、文本框、下拉框
- 滚动条、分组框、标签页
- 复选框、单选框
- 进度条、菜单、列表
- 状态栏、工具提示
特点
- 统一的视觉风格
- 支持悬停、选中、禁用等状态
- 响应式设计
- 约 10KB 的 QSS 样式表
4. 模块导出
src/gui/styles/__init__.py
导出颜色和主题相关:
ColorSchemeCOLORSget_colorThemeStyles- 浏览视图样式(如果存在)
src/gui/__init__.py
使用延迟导入避免 PyQt6 依赖:
- 样式模块直接导入
- 主窗口通过
get_main_window_class()延迟导入
文件结构
CutThenThink/
├── src/
│ └── gui/
│ ├── __init__.py # GUI 模块入口(延迟导入)
│ ├── main_window.py # 主窗口实现 ✨ 新增
│ └── styles/
│ ├── __init__.py # 样式模块导出
│ ├── colors.py # 颜色方案定义 ✨ 新增
│ ├── theme.py # 主题样式表 ✨ 新增
│ └── browse_style.py # 浏览视图样式(已存在)
├── docs/
│ ├── gui_main_window.md # 主窗口详细文档 ✨ 新增
│ └── p0_6_summary.md # 本总结文档 ✨ 新增
└── test_main_window.py # 测试脚本 ✨ 新增
技术特点
1. 米白色配色方案
- 温暖、舒适的视觉体验
- 柔和的对比度,适合长时间使用
- 专业的界面呈现
- 符合现代 UI 设计趋势
2. 模块化设计
- 样式与逻辑分离
- 颜色统一管理
- 易于维护和扩展
- 支持主题切换
3. 延迟导入
- 避免模块加载时的依赖问题
- 样式模块可以独立使用
- 不需要 PyQt6 也可以导入颜色定义
4. 响应式布局
- 自适应窗口大小
- 支持不同分辨率
- 优雅的空间利用
- 使用滚动区域支持大量内容
使用示例
基本使用
from PyQt6.QtWidgets import QApplication
from src.gui import get_main_window_class
app = QApplication([])
MainWindow = get_main_window_class()
window = MainWindow()
window.show()
app.exec()
使用颜色和样式
from src.gui.styles import COLORS, ThemeStyles
from PyQt6.QtWidgets import QPushButton
button = QPushButton("按钮")
button.setStyleSheet(f"""
QPushButton {{
background-color: {COLORS.accent_primary};
color: {COLORS.button_primary_text};
padding: 8px 16px;
border-radius: 6px;
}}
""")
验证结果
所有代码已通过以下验证:
- ✅ Python 语法检查通过
- ✅ 样式模块可以独立导入(不需要 PyQt6)
- ✅ 颜色方案定义完整
- ✅ 主题样式表完整
依赖要求
运行主窗口需要:
- PyQt6==6.6.1
- PyQt6-WebEngine==6.6.0
安装依赖:
pip install -r requirements.txt
后续工作
P1 任务(建议)
-
截图处理页面
- 集成 OCR 功能
- 实现图片预览
- 添加 AI 分析功能
-
分类浏览页面
- 实现截图列表显示
- 添加分类和标签筛选
- 实现搜索功能
-
批量上传页面
- 集成云存储 API
- 显示上传进度
- 管理上传队列
-
设置页面
- 实现配置保存/加载
- 添加配置验证
- 实现配置导入/导出
长期改进
- 添加深色主题
- 实现自定义主题
- 添加动画效果
- 国际化支持
- 可访问性改进
相关文档
- 详细文档:
docs/gui_main_window.md - 主窗口代码:
src/gui/main_window.py - 颜色方案:
src/gui/styles/colors.py - 主题样式:
src/gui/styles/theme.py - 测试脚本:
test_main_window.py
总结
P0-6 任务已成功完成,实现了:
- ✅ 主窗口框架
- ✅ 侧边栏导航
- ✅ 主内容区域布局
- ✅ 米白色配色方案
- ✅ 完整的样式表系统
所有代码结构清晰、易于扩展,为后续功能开发打下了坚实基础。