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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
深入理解python中的select模块
Apr 23 Python
Python Excel处理库openpyxl使用详解
May 09 Python
python提取照片坐标信息的实例代码
Aug 14 Python
python turtle 绘制太极图的实例
Dec 18 Python
python数据分析:关键字提取方式
Feb 24 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
Python 字典中的所有方法及用法
Jun 10 Python
Django使用echarts进行可视化展示的实践
Jun 10 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python使用matplotlib画饼状图
2018/09/25 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
应聘医学检验人员自荐信
2013/09/27 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
统计专业自荐书
2014/07/06 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
文明家庭事迹材料
2014/12/20 职场文书
管辖权异议上诉状
2015/05/23 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
师范生小学见习总结
2015/06/23 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS