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正则分组的应用
Nov 10 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
python实现多进程通信实例分析
Sep 01 Python
Django框架 查询Extra功能实现解析
Sep 04 Python
python英语单词测试小程序代码实例
Sep 09 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Python Sqlalchemy如何实现select for update
Oct 12 Python
python re的findall和finditer的区别详解
Nov 15 Python
python基于tkinter制作无损音乐下载工具
Mar 29 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网页病毒清除类
2014/12/08 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python引用模块和查找模块路径
2016/03/17 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
详解Django的CSRF认证实现
2018/10/09 Python
python读取各种文件数据方法解析
2018/12/29 Python
蔻驰法国官网:COACH法国
2018/11/14 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
文明演讲稿范文
2014/05/12 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python