Python 实现的截屏工具:功能详解与部署指南

叶初
叶初
发布时间:2026-10-11| 3人浏览过
原创

本文介绍基于 Python 和 PyQt5 开发的截屏工具 Jamscreenshot。该工具支持透视裁剪、多边形截图、取色器及油漆桶等高级编辑功能,并具备窗口控件识别能力。文章详细解析了其基于 PyQt5 信号槽机制与 OpenCV 轮廓识别的核心实现思路,并提供完整的模块安装与运行指南。

项目地址

该工具的源代码托管于 GitHub,项目地址为:https://github.com/fandesfyf/Jamscreenshot

功能概述

该截屏工具在基础截图之上,扩展了丰富的图像编辑与交互功能,旨在提升用户处理屏幕内容的效率。主要功能特性包括:

  • 高级编辑工具:新增透视裁剪、多边形截图、取色器以及油漆桶填充工具。
  • 背景处理:提供背景还原画笔,支持一键还原操作。
  • 历史记录:支持回退 10 步的操作历史记录,增强编辑容错性。
  • 交互优化:新增智能选框开关;画笔支持透明度调节(按住 Ctrl 键 + 滚轮);截屏透明度也可通过 Ctrl + 滚轮调节;鼠标划过取色按钮时显示常用颜色。
  • 屏幕固定与识别:支持将多个图片固定在屏幕上;基于 OpenCV 轮廓识别技术实现窗口控件识别。

模块安装

运行该工具需要安装特定的 Python 库。请确保您的环境中已包含以下依赖:

  1. PyQt5:作为核心 GUI 框架,直接运行 pip install PyQt5 即可安装。
  2. Pillow (PIL):用于图像处理,直接运行 pip install Pillow。
  3. OpenCV:用于窗口控件识别。普通版本 opencv-python 可满足基本需求;若需使用滚动截屏功能,必须安装 contrib 版本,且版本需小于 opencv-contrib-python==3.4.2.17。

此外,项目根目录下的 jamresourse.py 文件包含必要的图片资源,请勿删除。

核心实现思路

该工具代码总长 2000 余行,其核心逻辑围绕 PyQt5 的事件驱动机制与多层窗口堆叠展开。以下是其实现原理的详细解析:

1. 截屏触发与窗口构建

当用户点击截屏按钮或触发快捷键时,系统通过 PyQt5 的信号槽机制调用 screen_shot 函数。该函数利用 PyQt 的 grabWindow 方法截取全屏图像,并创建一个全屏窗口来显示截屏结果。该窗口具有以下关键属性:

  • 类型为 QLabel。
  • 具备置顶(Always on Top)属性,确保始终位于其他窗口之上。
  • 无边框设计,提供沉浸式编辑体验。
  • 开启鼠标追踪(Mouse Tracking),以精确捕捉鼠标移动轨迹。

2. 多层堆叠架构

截屏界面由三层 QLabel 堆叠而成,分别承担不同职责:

  • 背景层:显示截取的全屏图像内容。
  • 绘图层:具有透明背景,用于承载用户的涂鸦、裁剪框等编辑操作。该层以 Slabel 作为父控件。
  • 遮罩层:显示截屏阴影和选区方框,同样以 Slabel 为父控件。

3. 交互逻辑与事件处理

所有的用户交互均通过 Slabel 主类中的参数(如选区对角坐标 self.x0, x1, y0, y1)进行控制。鼠标事件的处理流程如下:

  1. 按下(mousePressEvent):记录起始位置。
  2. 移动(mouseMoveEvent):实时更新鼠标位置,动态绘制选区或编辑内容。
  3. 松开(mouseReleaseEvent):记录结束位置,并弹出确定按钮以显示最终选区界面。

上述三个事件触发时,均会调用 update 函数。该函数会自动重绘界面,进而调用 paintEvent 函数,确保用户看到的图像与编辑操作实时同步。

运行环境

该工具在以下环境中测试通过,一切运行正常:

  • Python 版本:3.7
  • PyQt5 版本:5.13.2
  • 操作系统:Windows 10

用户可直接运行项目文件,无需额外配置即可使用全部功能。

效果图

以上就是 Python 实现的截屏工具 Jamscreenshot 的详细内容,更多关于 Python 图像编辑与 PyQt5 开发技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。