feat: 实现CutThenThink P0阶段核心功能
项目初始化 - 创建完整项目结构(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>
This commit is contained in:
163
docs/P0-7_快速参考.md
Normal file
163
docs/P0-7_快速参考.md
Normal file
@@ -0,0 +1,163 @@
|
||||
# 图片处理组件快速参考
|
||||
|
||||
## 导入所有组件
|
||||
|
||||
```python
|
||||
from src.gui.widgets import (
|
||||
ScreenshotWidget,
|
||||
ClipboardMonitor,
|
||||
ImagePicker,
|
||||
ImagePreviewWidget,
|
||||
take_screenshot,
|
||||
)
|
||||
```
|
||||
|
||||
## 1. 截图组件 (ScreenshotWidget)
|
||||
|
||||
```python
|
||||
# 创建截图组件
|
||||
screenshot_widget = ScreenshotWidget(parent)
|
||||
|
||||
# 连接信号
|
||||
screenshot_widget.screenshot_saved.connect(lambda path: print(f"保存到: {path}"))
|
||||
|
||||
# 触发截图
|
||||
screenshot_widget.take_screenshot()
|
||||
|
||||
# 或使用全局快捷键函数
|
||||
take_screenshot()
|
||||
```
|
||||
|
||||
## 2. 剪贴板监听 (ClipboardMonitor)
|
||||
|
||||
```python
|
||||
# 创建监听器
|
||||
monitor = ClipboardMonitor(parent)
|
||||
|
||||
# 连接图片检测信号
|
||||
monitor.image_detected.connect(lambda path: handle_image(path))
|
||||
|
||||
# 控制监听状态
|
||||
monitor.set_enabled(True) # 启用
|
||||
monitor.set_enabled(False) # 禁用
|
||||
|
||||
# 检查当前剪贴板
|
||||
if monitor.has_image():
|
||||
pixmap = monitor.get_image()
|
||||
# 保存到文件
|
||||
monitor.save_current_image("/path/to/save.png")
|
||||
|
||||
# 清空历史
|
||||
monitor.clear_history()
|
||||
```
|
||||
|
||||
## 3. 图片选择器 (ImagePicker)
|
||||
|
||||
```python
|
||||
# 单选模式
|
||||
picker = ImagePicker(multiple=False, parent)
|
||||
picker.image_selected.connect(lambda path: print(path))
|
||||
|
||||
# 多选模式
|
||||
picker = ImagePicker(multiple=True, parent)
|
||||
picker.images_selected.connect(lambda paths: print(paths))
|
||||
|
||||
# 获取已选择的图片
|
||||
paths = picker.get_selected_images()
|
||||
|
||||
# 清除选择
|
||||
picker.clear_selection()
|
||||
```
|
||||
|
||||
## 4. 图片预览 (ImagePreviewWidget)
|
||||
|
||||
```python
|
||||
# 创建预览组件
|
||||
preview = ImagePreviewWidget(parent)
|
||||
|
||||
# 加载图片
|
||||
preview.load_image("/path/to/image.png")
|
||||
|
||||
# 或加载 QPixmap
|
||||
from PyQt6.QtGui import QPixmap
|
||||
preview.load_pixmap(QPixmap("/path/to/image.png"))
|
||||
|
||||
# 缩放操作
|
||||
preview.zoom_in() # 放大
|
||||
preview.zoom_out() # 缩小
|
||||
preview.fit_to_window() # 适应窗口
|
||||
preview.actual_size() # 实际大小
|
||||
|
||||
# 旋转操作
|
||||
preview.rotate(90) # 向右旋转 90 度
|
||||
preview.rotate(-90) # 向左旋转 90 度
|
||||
|
||||
# 全屏切换
|
||||
preview.toggle_fullscreen()
|
||||
|
||||
# 清除图片
|
||||
preview.clear()
|
||||
|
||||
# 获取当前图片
|
||||
pixmap = preview.get_current_pixmap()
|
||||
```
|
||||
|
||||
## 主窗口集成示例
|
||||
|
||||
```python
|
||||
from src.gui.main_window import MainWindow
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
import sys
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
window = MainWindow()
|
||||
window.show()
|
||||
sys.exit(app.exec())
|
||||
```
|
||||
|
||||
## 快捷键
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
|--------|------|
|
||||
| `Ctrl+Shift+A` | 新建截图 |
|
||||
| `Ctrl+Shift+V` | 粘贴剪贴板图片 |
|
||||
| `Ctrl+Shift+O` | 导入图片 |
|
||||
| `Ctrl++` | 放大图片 |
|
||||
| `Ctrl+-` | 缩小图片 |
|
||||
| `Ctrl+F` | 适应窗口 |
|
||||
| `Ctrl+0` | 实际大小 |
|
||||
| `Ctrl+L` | 向左旋转 |
|
||||
| `Ctrl+R` | 向右旋转 |
|
||||
| `F11` | 全屏切换 |
|
||||
| `ESC` | 取消截图/退出全屏 |
|
||||
|
||||
## 信号连接示例
|
||||
|
||||
```python
|
||||
# 截图保存完成
|
||||
screenshot_widget.screenshot_saved.connect(on_screenshot_saved)
|
||||
|
||||
# 剪贴板图片检测
|
||||
clipboard_monitor.image_detected.connect(on_clipboard_image)
|
||||
|
||||
# 图片选择
|
||||
image_picker.image_selected.connect(on_image_selected)
|
||||
image_picker.images_selected.connect(on_images_selected)
|
||||
|
||||
# 图片预览事件
|
||||
image_preview.image_loaded.connect(on_image_loaded)
|
||||
image_preview.image_load_failed.connect(on_load_failed)
|
||||
```
|
||||
|
||||
## 临时文件路径
|
||||
|
||||
```python
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
# 截图临时目录
|
||||
screenshot_dir = Path(tempfile.gettempdir()) / "cutthenthink" / "screenshots"
|
||||
|
||||
# 剪贴板临时目录
|
||||
clipboard_dir = Path(tempfile.gettempdir()) / "cutthenthink" / "clipboard"
|
||||
```
|
||||
Reference in New Issue
Block a user