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

3.4 KiB

图片处理组件快速参考

导入所有组件

from src.gui.widgets import (
    ScreenshotWidget,
    ClipboardMonitor,
    ImagePicker,
    ImagePreviewWidget,
    take_screenshot,
)

1. 截图组件 (ScreenshotWidget)

# 创建截图组件
screenshot_widget = ScreenshotWidget(parent)

# 连接信号
screenshot_widget.screenshot_saved.connect(lambda path: print(f"保存到: {path}"))

# 触发截图
screenshot_widget.take_screenshot()

# 或使用全局快捷键函数
take_screenshot()

2. 剪贴板监听 (ClipboardMonitor)

# 创建监听器
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)

# 单选模式
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)

# 创建预览组件
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()

主窗口集成示例

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 取消截图/退出全屏

信号连接示例

# 截图保存完成
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)

临时文件路径

import tempfile
from pathlib import Path

# 截图临时目录
screenshot_dir = Path(tempfile.gettempdir()) / "cutthenthink" / "screenshots"

# 剪贴板临时目录
clipboard_dir = Path(tempfile.gettempdir()) / "cutthenthink" / "clipboard"