怎么手动写代码做一个截图的电脑应用来用来截图

344 阅读2分钟

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

实现步骤

  1. 安装依赖库

    pip install PyQt5 pyautogui pillow
    
  2. 代码实现

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 中显示缩略图。

扩展功能

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

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

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