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实现的简单文件传输服务器和客户端
Apr 08 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
python实现自主查询实时天气
Jun 22 Python
用Python实现读写锁的示例代码
Nov 05 Python
python3实现表白神器
Apr 09 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
Django实现聊天机器人
May 31 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 采集心得技巧
2009/05/15 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
python3实现简单飞机大战
2020/11/29 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
工程师岗位职责
2013/11/08 职场文书
影视艺术学院毕业生自荐信
2013/11/13 职场文书
高中班长自我鉴定
2013/12/20 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
教师旷工检讨书
2014/01/18 职场文书
小学生优秀评语
2014/12/29 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
P站美图推荐——变身女主角特辑
2022/03/20 日漫