专栏首页程序员的知识天地Python写一个像QQ可快捷键唤起区域截屏的应用

Python写一个像QQ可快捷键唤起区域截屏的应用

1.截屏应用功能拆解

先把要实现哪些功能罗列一下,功能拆解好了,程序设计时就比较清晰。

1).首先要能响应快捷键调起截屏程序,像QQ使用Ctrl+shift+B可以截屏一样;

2).然后就是截图功能,可以用鼠标选取截取的区域;

3).最后是要把截屏保存为本地图片。

2.做一下技术调研

功能拆解出来了,就开始调查下实现难度,有没有现成的第三方库可用,Python是出了名的库多,多找一找总会找到的。

搜寻了一下Python有截图功能的库,基本都是全屏截图和程序输入坐标来区域截图,没办法用鼠标选择可视化截图。不过网上有同学提出通过写一个GUI程序,把全屏截图展示在这个GUI界面上,然后在GUI上可以实现鼠标可视化选取功能。

看起来还不错,因为之前用过Tkinter,所以就用Tkinter来做GUI了,不过很久没写,手也生得很。

Tkinkter可以监听键盘事件,但是只有当焦点在Tkinter上时才会响应键盘事件,而截图应用是截其他地方的图,比如浏览器,聊天软件等等,焦点这时肯定不在Tkinter上,所以需要另找一个可以全局监听键盘事件的库,pynput就进入了法眼。

跟截图图片处理的话,首先就想到PIL库,它的ImageGrab方法能够全局截图,也能传入坐标实现区域截图,就选PIL了。

一番搜寻下来确定了实现方法:

使用pynput库来监听键盘,使用Tkinter来做GUI,使用PIL的ImageGrab来截图。

详细的实现原理是:

当程序运行起来后就在后台监听键盘,当键盘按下ctrl+shift+M时就使用PIL做全屏截图,接着用Tkinter把全屏截图显示出来,通过Tkinter的画布(canvas)和鼠标选取做二次截图。

3.开始写截图代码了

pynput、Tkinter、PIL官方和网上都有示例,拿过来改一改,把他们逻辑串在一起就可以调试了。

监听键盘代码如下:

截图、调用TK、二次截图主逻辑如下:

想加一个演示效果的,结果录屏软件弄了很久,视频分辨率都不理想,汗!

100多行代码搞定快捷键截屏功能,这就是用Python的好处,各种小功能都有解决方案,主要花的事情是拆解功能,选定实现路径。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python基础教程:内置函数(一)

    Python解释器内置了很多函数和类型,可以随时随地在编程中使用。其实,我们在前面的学习中已经接触过好多内置函数。

    一墨编程学习
  • 博士程序员感慨互联网行业太累,想进事业单位被网友批:浪费人才

    一名计算机博士毕业后在互联网行业从事程序员工作,但随着年龄的增长,感觉越发吃不消了:坐标北京,36岁的博士程序员,技术一般,在互联网公司工作的很吃力,且加班多,...

    一墨编程学习
  • web前端知识体系大全,教你如何学习前端!

    大约在几个月之前,让我看完了《webkit技术内幕》这本书的时候,突然有了一个想法。想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前...

    一墨编程学习
  • 截图和录屏工具,有它就够了

    截图功能想必大家在生活是比较经常用的。那么,你平时用哪些截图工具呢?用着是否高效,是否顺畅?是否使用QQ截图?

    格姗知识圈
  • 【每日推荐】一款绿色轻快的截图软件

    亲爱的读者朋友们,博主的每日推荐终于开始更新啦~~是不是很高兴呢? ? 什么?你不知道有每日推荐? ?   点我去了解一下吧。

    Blogbyme
  • 更新|PC截图工具的最佳选择。

    说到截图,最常用的可能就是QQ自带的截图功能了,简单流畅能满足我们的日常需求,依附于QQ,没有特殊的需求甚至不需要其他的截图软件。

    课代表
  • PPIICC:简洁易用的长截图工具

    美丽应用
  • mac os系统自带的截图快捷键有哪些?

    不知道有没有初用Mac的同学,一开始不知道Mac如何截图,不了解Mac自带截图功能的快捷键,每次要截图还要借助如QQ一类带截图工具的软件,非常繁琐。今天就来说说...

    连胜
  • 快速保存某个网页或者文档,几种方法教你做到,FireShot 捕捉网页截图插件!

    很多童鞋有时候浏览到好的文档或者资料想要下载下来,但是这个又无法下载,可能聪明的童鞋就想到了截图插件以及软件来辅助下载下来。今天号主就给大家介绍几个方法!

    FreeRonin
  • 只需五步,10分钟,你就可以成为全栈工程师

    步骤说明都写在截图里,我就不多说什么了; 步骤说明都写在截图里,我就不多说什么了; 步骤说明都写在截图里,我就不多说什么了; 步骤说明都写在截图里,我就不多说什...

    前朝楚水

扫码关注云+社区

领取腾讯云代金券