桌面太单调?今天就带大家,一起用Python的PyQt5开发一个有趣的自定义桌面动画挂件,看看实现的动画挂件效果!
下面,我们开始介绍这个自定义桌面动画挂件的制作过程。
一、核心功能设计
实现将动态图gif或视频转成一个桌面动画挂件,知识点主要涉及了对GIF图/视频解析,人像提取分割,PyQt5窗体设置,自定义挂件动画实现,ico图标生成,程序打包等。
拆解需求,大致可以整理出我们需要分为以下几步完成:
1.对gif或者视频进行逐帧解析,获取转换的图片,提取图像中人体区域,并对图片进行批量尺寸大小修改替换
2.初始化设置动画挂件窗体显示效果,窗体位置、大小等
3.桌面动画挂件功能实现,动画轮播、鼠标控制挂件位置拖动
4.挂件打包图标设置、打包配置
二、实现步骤
干货主要有:
① 200 多本 Python 电子书(和经典的书籍)应该有
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且可靠的练手项目及源码)
④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
Python学习交流Q群101677771
- 解析提取,修改图片
GIF图解析:
首先我们需要将Gif逐帧进行解析 ,转换成图片格式。代码如下:
<span class="hljs-keyword">from PIL <span class="hljs-keyword">import Image </span></span>
gif逐帧转为图片,效果如下:
视频解析:
对视频解析,也是逐帧进行解析,转换成若干张图片,代码如下:
桌面小部件功能
初始化动画部件
这样只是完成了图片的静态显示,下面我们来完成图片的动态轮播效果
动画轮播:
<span class="hljs-keyword">self.timer = QTimer()
<span class="hljs-keyword">self.timer.timeout.connect(<span class="hljs-keyword">self.img_update)
<span class="hljs-keyword">self.timer.start(<span class="hljs-number">100)
<span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">img_update<span class="hljs-params">(<span class="hljs-keyword">self):
<span class="hljs-keyword">if <span class="hljs-keyword">self.img_num < <span class="hljs-keyword">self.<span class="hljs-symbol">img_count:
<span class="hljs-keyword">self.img_num += <span class="hljs-number">1
<span class="hljs-symbol">else:
<span class="hljs-keyword">self.img_num = <span class="hljs-number">1
<span class="hljs-keyword">self.img_path = <span class="hljs-string">'./image/{file}/{img}.png'.format(file=<span class="hljs-keyword">self.dis_file, img=str(<span class="hljs-keyword">self.img_num))
<span class="hljs-keyword">self.qpixmap = QPixmap(<span class="hljs-keyword">self.img_path)
<span class="hljs-keyword">self.lab.setPixmap(<span class="hljs-keyword">self.qpixmap)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
鼠标控制挂件位置拖动:
<span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">mousePressEvent<span class="hljs-params">(<span class="hljs-keyword">self, QMouseEvent):
<span class="hljs-keyword">if QMouseEvent.button() == Qt.<span class="hljs-symbol">LeftButton:
<span class="hljs-keyword">self.pos_first = QMouseEvent.globalPos() - <span class="hljs-keyword">self.pos()
QMouseEvent.accept()
<span class="hljs-keyword">self.setCursor(QCursor(Qt.OpenHandCursor))
<span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">mouseMoveEvent<span class="hljs-params">(<span class="hljs-keyword">self, QMouseEvent):
<span class="hljs-keyword">if Qt.<span class="hljs-symbol">LeftButton:
<span class="hljs-keyword">self.move(QMouseEvent.globalPos() - <span class="hljs-keyword">self.pos_first)
print(<span class="hljs-keyword">self.pos())
<span class="hljs-keyword">self.x, <span class="hljs-keyword">self.y = <span class="hljs-keyword">self.pos().x, <span class="hljs-keyword">self.pos().y
QMouseEvent.accept()
<span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">quit<span class="hljs-params">(<span class="hljs-keyword">self):
<span class="hljs-keyword">self.close()
sys.exit()
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
到此为止,桌面小部件已开发完成,效果如下:
可以使用将程序打包为exe可执行文件直接发给你的朋友,这样就不用安装python环境了。
Original: https://www.cnblogs.com/sn5200/p/15945888.html
Author: Python可乐的呀
Title: 纯Python开发电脑桌面挂件,冰墩墩雪容融完美组合
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/814835/
转载文章受原作者版权保护。转载请注明原作者出处!