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实现DNS正向查询、反向查询的例子
Apr 25 Python
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
Django自带的用户验证系统实现
Dec 18 Python
python实现xml转json文件的示例代码
Dec 30 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
浅谈Python响应式类库RxPy
Jun 14 Python
Python类方法总结讲解
Jul 26 Python
关于python爬虫应用urllib库作用分析
Sep 04 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP xpath()函数讲解
2019/02/11 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
python 多线程应用介绍
2012/12/19 Python
python实现在pickling的时候压缩的方法
2014/09/25 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
班级寄语大全
2014/04/10 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
2019年思想汇报
2019/06/20 职场文书
总结Python常用的魔法方法
2021/05/25 Python
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript