精确截图工具:基于 Tkinter 和 PyAutoGUI 的实现

在日常工作中,截图是一个非常常见的需求。虽然 Windows 自带截图工具,但有时我们需要更精确的截图方式,比如选取特定区域、快速保存截图并进行预览。本篇博客将介绍一个使用 Python 结合 Tkinter 和 PyAutoGUI 开发的精确截图工具。
C:\pythoncode\new\manageimages.py

运行结果

在这里插入图片描述
在这里插入图片描述

全部代码

import tkinter as tk
from tkinter import ttk
import pyautogui
import numpy as np
from PIL import Image, ImageTk, ImageGrab
import os
from datetime import datetime
import time

class ImprovedScreenshotTool:
    def __init__(self):
        # Create the main window
        self.root = tk.Tk()
        self.root.title("精确截图工具")
        self.root.geometry("400x200")
        self.root.resizable(False, False)
        
        # Center the window
        self.center_window()
        
        # Create a frame for the controls
        control_frame = ttk.Frame(self.root)
        control_frame.pack(pady=10, fill=tk.X)
        
        # Create and place the screenshot button
        self.screenshot_btn = ttk.Button(
            control_frame, 
            text="开始截图",
            width=20,
            command=self.prepare_screenshot
        )
        self.screenshot_btn.pack(pady=10)
        
        # Status label
        self.status_label = ttk.Label(control_frame, text="就绪")
        self.status_label.pack(pady=5)
        
        # Preview frame
        self.preview_frame = ttk.LabelFrame(self.root, text="最近截图预览")
        self.preview_frame.pack(pady=10, padx=10, fill=tk.BOTH, expand=True)
        
        self.preview_label = ttk.Label(self.preview_frame)
        self.preview_label.pack(fill=tk.BOTH, expand=True)
        
        # Variables for region selection
        self.start_x = 0
        self.start_y = 0
        self.end_x = 0
        self.end_y = 0
        
        # Save directory
        pictures_dir = os.path.join(os.path.expanduser("~"), "Pictures")
        if os.path.exists(pictures_dir):
            self.save_dir = pictures_dir
        else:
            self.save_dir = os.path.join(os.path.expanduser("~"), "Desktop")
            
        # Make sure the directory exists
        if not os.path.exists(self.save_dir):
            os.makedirs(self.save_dir)
            
        # Last saved file
        self.last_saved_file = None
        
    def center_window(self):
        # Get screen width and height
        screen_width = self.root.winfo_screenwidth()
        screen_height = self.root.winfo_screenheight()
        
        # Calculate position
        x = (screen_width - 400) // 2
        y = (screen_height - 200) // 2
        
        # Set window position
        self.root.geometry(f"400x200+{
     x}+{
     y}")
            
    def prepare_screenshot(self):
        # Update status
        self.status_label.config(text="准备截图...")
        self.root.update()  # Force UI update
        
        # Minimize window
        self.root.withdraw()
        
        # Wait a moment for UI to update
        self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值