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