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截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中的pathlib.Path为什么不继承str详解

    Python中的pathlib.Path为什么不继承str详解

    这篇文章主要给大家介绍了关于Python中pathlib.Path为什么不继承str的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Python真题案例之小学算术 阶乘精确值 孪生素数 6174问题详解

    Python真题案例之小学算术 阶乘精确值 孪生素数 6174问题详解

    这篇文章主要介绍了python实操案例练习,本文给大家分享的案例中主要任务有小学生算术、阶乘的精确值、孪生素数、6174问题,需要的小伙伴可以参考一下
    2022-03-03
  • Python3实现网页内容转换成PDF文档和图片

    Python3实现网页内容转换成PDF文档和图片

    pdfkit是把 HTML+CSS 格式的文件转换成 PDF 的一种工具,它是 wkhtmltopdf 这个工具包的 python 封装。本文将利用pdfkit实现网页内容转换成PDF文档和图片效果,感兴趣的可以学习一下
    2022-06-06
  • Transformer导论之Bert预训练语言解析

    Transformer导论之Bert预训练语言解析

    这篇文章主要为大家介绍了Transformer导论之Bert预训练语言解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Pandas读取行列数据最全方法

    Pandas读取行列数据最全方法

    本文主要介绍了Pandas读取行列数据最全方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • python 字典操作提取key,value的方法

    python 字典操作提取key,value的方法

    这篇文章主要介绍了python 字典操作提取key,value的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 学习python之编写简单乘法口诀表实现代码

    学习python之编写简单乘法口诀表实现代码

    这篇文章主要介绍了学习python之编写简单乘法口诀表实现代码,需要的朋友可以参考下
    2016-02-02
  • NumPy 基本切片和索引的具体使用方法

    NumPy 基本切片和索引的具体使用方法

    这篇文章主要介绍了NumPy 基本切片和索引的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • django-filter和普通查询的例子

    django-filter和普通查询的例子

    今天小编就为大家分享一篇django-filter和普通查询的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python实现自动合并Word并添加分页符

    Python实现自动合并Word并添加分页符

    这篇文章主要为大家详细介绍了如何基于Python实现对多个Word文档加以自动合并,并在每次合并时按要求增添一个分页符的功能,感兴趣的可以了解一下
    2023-02-02

最新评论