python基于tkinter实现gif录屏功能


Posted in Python onMay 19, 2021

一、主界面实现

(一)实现最简单的窗体

from tkinter import *

if __name__ == '__main__':

    tk = Tk()
    tk.geometry('500x400+500+150')
    tk.title('有趣的透明窗体-开篇了!!!')
    canvas = Canvas(tk)
    canvas.pack(fill=BOTH, expand=Y)
    tk.mainloop()

太简单了,不详细说了,相信大家都看得懂。

(二)把灰色设置成透明色

TRANSCOLOUR = 'gray'
tk.wm_attributes('-transparentcolor', TRANSCOLOUR)

(三)放置一个矩形框在canvas上

canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)

(四)让透明窗体不断重画的onsize函数

def on_resize(evt):
    tk.configure(width=evt.width,height=evt.height)
    canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)
    print(canvas.winfo_width())

(五)绑定onsize函数

tk.bind('<Configure>', on_resize)

(六)透明窗体的效果

哈哈,透明主界面效果出来了。

python基于tkinter实现gif录屏功能

二、GIF录屏功能实现

(一)按次保存成图片

def _GifScreen():
    global i
    i += 1
    HWND = win32gui.FindWindow(None,'有趣的透明窗体-开篇了!!!')
    print(HWND)
    rect=win32gui.GetWindowRect(HWND) #获取当前窗口坐标
    rect = (rect[0]+10,rect[1]+32,rect[0]+10+ canvas.winfo_width(),rect[1]+10+canvas.winfo_height()+16)
    print(rect)
    im=ImageGrab.grab(rect) #截取目标图像
    im.save("./out/CaptureScreen_%s.jpeg" % i,'jpeg') #前面一个参数是保存路径,后面一个参数是保存格式

(二)启用一个线程

启用一个线程,调用makegif函数,实现gif图片的截取

def GifScreen():
    thread_list = []
    t1 = threading.Thread(target=makegif)
    thread_list.append(t1)

(三)实现具体的makegif函数

当生成的图片达到20张的时候,就开始调用create_gif函数打包成gif文件。

def makegif():
    global i,image_list
    while True:
        _GifScreen()
        time.sleep(0.5)
        if i > 20:
            break;
    create_gif(image_list,'out.gif',0.5)

(四)实现create_gif,将文件夹里面的图片打包成GIF文件

image_list = []
def create_gif(image_list, gif_name, duration = 1.0):
    frames = []
    for image_name in image_list:
        frames.append(imageio.imread(image_name))
    imageio.mimsave(gif_name, frames, 'GIF', duration=duration)

(五)增加录屏按钮,并绑定响应事件GifScreen

b = Button(tk, text='GIF截图', command=GifScreen)
b.pack()

(六)实现按钮的响应事件GifScreen

def GifScreen():
    thread_list = []
    t1 = threading.Thread(target=makegif)
    thread_list.append(t1)

    #正式开启现线程
    for t in thread_list:
        t.setDaemon(True)
        t.start()

三、整体实现效果

(一)界面效果

python基于tkinter实现gif录屏功能

(二)GIF录屏效果

python基于tkinter实现gif录屏功能

代码量不大,效果还行。
再深入研究可以有更多更有趣的应用。

以上就是python基于tkinter实现gif录屏功能的详细内容,更多关于python gif录屏的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
从零学Python之入门(二)基本数据类型
May 25 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
python编写简单爬虫资料汇总
Mar 22 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
Flask之flask-session的具体使用
Jul 26 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
Python字符串内置函数功能与用法总结
Apr 16 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
Pytorch实验常用代码段汇总
Nov 19 Python
Python学习之时间包使用教程详解
Mar 21 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 #Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
You might like
一篇入门的php Class 文章
2007/04/04 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
python tkinter界面居中显示的方法
2018/10/11 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
Python for i in range ()用法详解
2020/09/18 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
python 下载文件的几种方法汇总
2021/01/06 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
租房安全协议书
2014/08/20 职场文书
公司离职证明范本
2014/10/17 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
文书工作总结(范文)
2019/07/11 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
CSS基础详解
2021/10/16 HTML / CSS