Python+PyQt5开发一个截图工具

 更新时间:2024年12月31日 09:16:24   作者:moddy  
这篇文章主要为大家详细介绍了如何使用Python和PyQt5开发一个截图工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

制作一个简单的电脑截图应用,可以使用 Python 结合 PyQtTkinter 开发一个图形化界面程序,同时使用 Pillowpyautogui 来实现截图功能。以下是一个使用 Python 和 PyQt5 的示例代码,展示如何手动写代码实现一个截图工具。

实现步骤

安装依赖库

pip install PyQt5 pyautogui pillow

代码实现

import sys
import pyautogui
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog, QLabel
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
from PIL import Image

class ScreenshotApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("截图工具")
        self.setGeometry(300, 300, 400, 300)
        
        # 添加按钮
        self.screenshot_button = QPushButton("截图", self)
        self.screenshot_button.setGeometry(150, 50, 100, 50)
        self.screenshot_button.clicked.connect(self.take_screenshot)
        
        self.save_button = QPushButton("保存截图", self)
        self.save_button.setGeometry(150, 150, 100, 50)
        self.save_button.clicked.connect(self.save_screenshot)
        self.save_button.setEnabled(False)  # 禁用按钮,直到截图完成
        
        # 显示截图的标签
        self.screenshot_label = QLabel(self)
        self.screenshot_label.setGeometry(50, 220, 300, 50)
        self.screenshot_label.setAlignment(Qt.AlignCenter)
        
        # 存储截图
        self.screenshot = None

    def take_screenshot(self):
        # 截取全屏
        screenshot = pyautogui.screenshot()
        self.screenshot = screenshot
        self.save_button.setEnabled(True)  # 启用保存按钮
        
        # 将截图显示在 GUI 中
        screenshot.save("temp.png")  # 暂时保存为临时文件
        pixmap = QPixmap("temp.png")
        self.screenshot_label.setPixmap(pixmap.scaled(300, 50, Qt.KeepAspectRatio))
        self.screenshot_label.setText("截图完成,请保存!")

    def save_screenshot(self):
        if self.screenshot:
            # 选择保存路径
            file_path, _ = QFileDialog.getSaveFileName(self, "保存截图", "", "PNG Files (*.png);;All Files (*)")
            if file_path:
                self.screenshot.save(file_path)
                self.screenshot_label.setText(f"截图已保存到: {file_path}")
        else:
            self.screenshot_label.setText("没有可保存的截图!")

# 主程序运行
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = ScreenshotApp()
    window.show()
    sys.exit(app.exec_())

功能说明

1.界面布局

  • 一个截图按钮用于截图。
  • 一个保存按钮用于保存截图。
  • 标签显示截图状态或截图缩略图。

2.功能点

  • 使用 pyautogui.screenshot() 实现屏幕截图。
  • 使用 QFileDialog 提供保存截图的对话框。
  • 截图后可在 GUI 中显示缩略图。

扩展功能

如果需要更复杂的功能,可以进一步开发:

  • 区域截图:让用户用鼠标拖拽选择截图区域。
  • 热键功能:使用 keyboard 库监听快捷键。
  • 截图编辑:增加文字标注、画框等功能。
  • 多语言支持:为国际用户提供多语言界面。

这段代码可以直接运行,作为一个入门项目,适合学习界面编程和基本功能开发!

到此这篇关于Python+PyQt5开发一个截图工具的文章就介绍到这了,更多相关Python截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决django后台样式丢失,css资源加载失败的问题

    解决django后台样式丢失,css资源加载失败的问题

    今天小编就为大家分享一篇解决django后台样式丢失,css资源加载失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 使用Python生成条形码图片的实战代码

    使用Python生成条形码图片的实战代码

    在自动化生产、物流配送、商超系统等日常业务中,条形码已成为数据快速读取与追踪的核心方式,相比手工设计,使用 Python 编程生成条形码图片,能显著提升效率并支持批量处理,本文将介绍如何使用Python生成条形码,需要的朋友可以参考下
    2025-05-05
  • 基于OpenCV4.2实现单目标跟踪

    基于OpenCV4.2实现单目标跟踪

    这篇文章主要介绍了如何和何时使用OpenCV 4.2中可用的8种不同的跟踪器- BOOSTING, MIL, KCF, TLD, MEDIANFLOW, GOTURN, MOSSE和CSRT,并用他们实现单目标跟踪,需要的可以参考一下
    2022-03-03
  • pytorch的backward()的底层实现逻辑详解

    pytorch的backward()的底层实现逻辑详解

    自动微分是一种计算张量(tensors)的梯度(gradients)的技术,它在深度学习中非常有用,这篇文章主要介绍了pytorch的backward()的底层实现逻辑,需要的朋友可以参考下
    2023-11-11
  • 中秋快到了利用 python 绘制中秋礼物

    中秋快到了利用 python 绘制中秋礼物

    眼看中秋又快到了,中秋回家,带什么礼物更让家人欢心?今天小编就利用python帮你带个对象回家,感兴趣的小伙伴赶快来看,要记得收藏起来以免迷路
    2021-09-09
  • Win10下python3.5和python2.7环境变量配置教程

    Win10下python3.5和python2.7环境变量配置教程

    这篇文章主要为大家详细介绍了Win10下python3.5和python2.7环境变量配置教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python上下文管理器进阶之巧用contextlib简化with语法

    Python上下文管理器进阶之巧用contextlib简化with语法

    本文介绍了Python中两种实现上下文管理器的方法,重点讲解了如何使用contextlib模块的contextmanager装饰器简化with语法,本文对比了两种方案的优缺点,大家可以根据需要进行选择
    2026-07-07
  • 利用Python实现Shp格式向GeoJSON的转换方法

    利用Python实现Shp格式向GeoJSON的转换方法

    JSON(JavaScript Object Nonation)是利用键值对+嵌套来表示数据的一种格式,以其轻量、易解析的优点,这篇文章主要介绍了利用Python实现Shp格式向GeoJSON的转换,需要的朋友可以参考下
    2019-07-07
  • python追加元素到列表的方法

    python追加元素到列表的方法

    这篇文章主要介绍了python追加元素到列表的方法,涉及Python列表操作中append方法追加元素的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • pandas DataFrame 根据多列的值做判断,生成新的列值实例

    pandas DataFrame 根据多列的值做判断,生成新的列值实例

    今天小编就为大家分享一篇pandas DataFrame 根据多列的值做判断,生成新的列值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论