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的dict字典结构操作方法学习笔记
May 07 Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 Python
详解python中的index函数用法
Aug 06 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
python_mask_array的用法
Feb 18 Python
python实现小程序推送页面收录脚本
Apr 20 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
Python threading模块condition原理及运行流程详解
Oct 05 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
Mar 03 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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页面中文乱码分析
2013/10/29 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php中动态调用函数的方法
2015/03/16 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
微信小程序3D轮播实现代码
2019/09/19 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
python将文本分每两行一组并保存到文件
2018/03/19 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
数百万免费的图形资源:Freepik
2020/09/21 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
机械电子工程毕业生自荐信
2013/11/23 职场文书
五一促销活动总结
2014/07/01 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
放飞理想主题班会
2015/08/14 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python