Files
cutThenThink/docs/P0-7_快速参考.md
congsh c4a77f8aa4 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>
2026-02-11 18:21:31 +08:00

164 lines
3.4 KiB
Markdown

# 图片处理组件快速参考
## 导入所有组件
```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"
```