164 lines
3.4 KiB
Markdown
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"
|
||
|
|
```
|