Python 实现鼠标拖动截图

这篇具有很好参考价值的文章主要介绍了Python 实现鼠标拖动截图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python 实现鼠标拖动截图

此功能由3个.py文件实现,分别为:test00.py、screenshot.py、py_tool.py;实现鼠标附近局部放大,未截图部分半透明,鼠标控制键盘精准截图,鼠标框选后自动保存截图,按下esc键退出截图;
python 鼠标截图,python,开发语言文章来源地址https://www.toymoban.com/news/detail-626903.html

一、test00.py 用于测试

import tkinter as tk

from common import py_tool
from common.screenshot import Screenshot

scale = py_tool.get_screen_scale_rate()
py_tool.eliminate_scaling_interference()
top = tk.Tk()

Screenshot(top, scale)

top.mainloop()

二、screenshot.py 实现截图

# coding:utf-8

import time
import tkinter as tk
import keyboard
from PIL import ImageGrab, ImageTk, Image

from common import py_tool


# 截图类
class Screenshot:
    def __init__(self, top, scale):
        """---------------------------------------------------系统设置"""
        # 获取屏幕缩放比例;
        self.scale = scale
        # 排除缩放干扰;
        py_tool.eliminate_scaling_interference()
        # 初始化关闭窗口标志;
        self.win_close = 0
        "---------------------------------------------------初始窗口"
        # 最小化主窗口;
        top.iconify()
        # 实例化主窗口;
        self.top_screenshot = tk.Toplevel(top)
        # 不显示标题栏;
        self.top_screenshot.overrideredirect(True)
        # 窗口长和宽;
        self.width_win = self.top_screenshot.winfo_screenwidth()
        self.height_win = self.top_screenshot.winfo_screenheight()
        # 设置主窗口大小和位置;
        self.top_screenshot.geometry(str(int(self.width_win)) + 'x' + str(int(self.height_win)) + '+' +
                                     str(int((self.top_screenshot.winfo_screenwidth() - self.width_win) / 2)) + '+' +
                                     str(int((self.top_screenshot.winfo_screenheight() - self.height_win) / 2)))
        # 设置窗口背景颜色,鼠标样式;
        self.top_screenshot.config(bg='', cursor='crosshair')
        "---------------------------------------------------全屏截图"
        # 实时放大会把雾窗口和截图边框放大,不美观,速度慢,放大已完成截图的图片;
        time.sleep(0.5)
        # 全屏截图;
        self.img_screenshot = ImageGrab.grab(
            (0, 0, self.top_screenshot.winfo_screenwidth(), self.top_screenshot.winfo_screenheight()))
        # 保存截图;
        self.img_screenshot.save('test00.png')
        # 打开截图;
        self.img_screenshot = Image.open('test00.png')
        "---------------------------------------------------窗口边框"
        # 初始化边框画布边框宽度;
        self.canvas_frame_frame_width = 1 * self.scale
        # 创建上边框画布;
        canvas_frame_up = tk.Canvas(self.top_screenshot, width=self.width_win, height=self.canvas_frame_frame_width,
                                    bg='yellow',
                                    highlightthickness=self.canvas_frame_frame_width,
                                    highlightbackground='yellow')
        # 设置上边框画布位置;
        canvas_frame_up.place(relx=0.5, rely=0, anchor=tk.CENTER)
        canvas_frame_down = tk.Canvas(self.top_screenshot, width=self.width_win,
                                      height=self.canvas_frame_frame_width + 1,
                                      bg='yellow',
                                      highlightthickness=self.canvas_frame_frame_width,
                                      highlightbackground='yellow')
        canvas_frame_down.place(relx=0.5, rely=1, anchor=tk.CENTER)
        canvas_frame_left = tk

到了这里,关于Python 实现鼠标拖动截图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python【Matplotlib】交互式时间序列绘图,将x轴设置为日期时间格式并和鼠标拖动缩放相结合

    上篇博客:python【matplotlib】鼠标拖动滚动缩放坐标范围和拖动图例共存,得到启发,我们已经可以通过鼠标拖动缩放坐标范围和移动图例,来实现动态交互式绘图了,对于x轴是时间序列的绘图需求,能否也实现动态交互式绘图呢? 答案是肯定的,接下来我将详细描述其实现

    2024年03月13日
    浏览(60)
  • (必备技能)使用Python实现屏幕截图

    在csdn上有很多纯copy,这给我复现带来了很大的麻烦,所以我想根据我的个人找截图的经历记录下来,给未来的自己看,免得忘记了云云。 由于我比较喜欢用opencv处理图像,所以截屏最后都会附带一个使用opencv显示图片的一个步骤。 1、下载pyautogui包 注:使用pyautogui方法获取

    2024年02月07日
    浏览(46)
  • ThreeJs的场景实现鼠标拖动旋转控制

            前面一个章节中已经实现在场景中放置一个正方体,并添加灯光使得正方体可见。但是由于是静态的还不能证明是3D的,我们需要添加一些控制器,使得通过鼠标控制正方体可以动起来,实现真正的3D效果,由此引入OrbitControls组件,他实质是改变相机的位置,实现

    2024年02月07日
    浏览(59)
  • 使用opengl绘制茶壶并实现鼠标拖动

    难点如下:         坐标轴绘制             选定一个原点,将坐标轴正方向和反方向的俩个点进行连线,代码及效果如上图所示(本次程序中由于渲染原因,坐标轴颜色统一为棕色)         如何实现鼠标响应         OPENGL中封存有对鼠标进行相应的函数,

    2024年01月17日
    浏览(38)
  • OpenCV项目开发实战--基于Python/C++实现鼠标注释图像和轨迹栏来控制图像大小

    鼠标指针是图形用户界面 (GUI) 中的关键组件。没有它,您就无法真正考虑与 GUI 进行交互。那么,让我们深入了解 OpenCV 中鼠标和轨迹栏的内置函数。我们将演示如何使用鼠标来注释图像,以及如何使用轨迹栏来控制图像的大小 我们将使用下图来演示 OpenCV 中鼠标指针和轨迹

    2024年02月11日
    浏览(53)
  • Python 使用 PyQt5 实现截图

    原文链接:https://www.cpweb.top/2566 使用 PyQt5 实现截图功能,功能点: • 选框截图:鼠标左键选择区域双击截屏,右击重新截图。 • 全屏截图:不选区域,直接鼠标双击截全屏。

    2024年02月14日
    浏览(40)
  • Python 三种方法实现截图【详解+完整代码】

    如何用python实现截屏? 一、方法一 PIL中的ImageGrab模块 使用PIL中的ImageGrab模块简单,但是效率有点低 PIL是Python Imaging Library, 它为python解释器提供图像编辑函数能力。 ImageGrab模块可用于将屏幕或剪贴板的内容复制到PIL图像存储器中。 PIL.ImageGrab.grab()方法拍摄屏幕快照。 边框

    2024年01月17日
    浏览(44)
  • Mkdocs中利用Js实现大小圈鼠标拖动样式

    在 docs/javascripts/extra.js 下复制粘贴: 其中比较重要的参数就是鼠标的尺寸和颜色,已经在上图中标出,目前发现颜色只支持RGB写法和固有名称写法(例如red这种),其他参数也可以自行摸索: 在docs/stylesheets/extra.css添加如下代码: 这里比较重要的参数就是鼠标跟随的圆形颜

    2024年02月15日
    浏览(37)
  • openlayers实现锁定地图,不可使用鼠标拖动放大缩小地图

    开启地图锁定功能,不再允许使用鼠标拖拽查看地图,使用鼠标滚轮放大缩小查看地图 关键代码 包含业务开关的代码 注:这个图是别的大佬整理的 https://www.ktanx.com/blog/p/2656

    2024年02月02日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包