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

422 阅读2分钟

制作一个简单的电脑截图应用,可以使用 Python 结合 PyQt 或 Tkinter 开发一个图形化界面程序,同时使用 Pillow 或 pyautogui 来实现截图功能。以下是一个使用 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. 多语言支持:为国际用户提供多语言界面。

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