纯Python开发电脑桌面挂件,冰墩墩雪容融完美组合

桌面太单调?今天就带大家,一起用Python的PyQt5开发一个有趣的自定义桌面动画挂件,看看实现的动画挂件效果!

下面,我们开始介绍这个自定义桌面动画挂件的制作过程。

一、核心功能设计

实现将动态图gif或视频转成一个桌面动画挂件,知识点主要涉及了对GIF图/视频解析,人像提取分割,PyQt5窗体设置,自定义挂件动画实现,ico图标生成,程序打包等。

拆解需求,大致可以整理出我们需要分为以下几步完成:

1.对gif或者视频进行逐帧解析,获取转换的图片,提取图像中人体区域,并对图片进行批量尺寸大小修改替换
2.初始化设置动画挂件窗体显示效果,窗体位置、大小等
3.桌面动画挂件功能实现,动画轮播、鼠标控制挂件位置拖动
4.挂件打包图标设置、打包配置

二、实现步骤

干货主要有:

① 200 多本 Python 电子书(和经典的书籍)应该有

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且可靠的练手项目及源码)

④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

Python学习交流Q群101677771
  1. 解析提取,修改图片

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Django+HTML+MYSQL

    虚拟环境创建django 安装virtualenv模块(虚拟环境):pip install virtualenv 创建一个项目文件夹:mkdir mysite01 切换到项目文件夹…

    Python 2023年8月4日
    048
  • 第一章:第三节探索性数据分析

    文章目录 第一章:探索性数据分析 * 1.6 了解你的数据吗? – 1.6.1 任务一:利用Pandas对示例数据进行排序,要求升序 1.6.2 任务二:对泰坦尼克号数…

    Python 2023年8月22日
    042
  • Python:从清华源安装第三方库

    python 在使用pip安装的时候,一些小一点的还好,安装一些大的包的时候,会非常的慢甚至出现timeout的报错,这时我们就可以使用清华大学的镜像来安装,打开终端: pip i…

    Python 2023年10月8日
    073
  • Redis基础

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 入…

    Python 2023年8月12日
    038
  • 如何在 MAC 电脑上查找 IP 地址

    我们如何在 MAC 电脑上查询自己的 IP 地址,以及查找 IP 地址的归属地呢? 下面是一些详细的步骤。 Mac 查找自己的 IP 地址 我们在 Mac 系统桌面上,点击 系统偏…

    Python 2023年6月10日
    096
  • 【多服务场景化解决方案】智能家居(UrbanHome)

    ​ 介绍 UrbanHome是一款提供房屋维修服务的移动应用。如有维修需求,用户可通过该应用联系所在城市的管道工,电工,保洁,漆匠,木匠,修理工等,或是搜寻导航附近的维修商店。 通…

    Python 2023年10月23日
    035
  • 一个简单的scrapy框架

    example.zip 1.创建Scrapy项目 在cmd控制台执行,进入到目标文件夹路径 scrapy startproject example EXAMPLE example …

    Python 2023年10月6日
    060
  • Python笔记-DataFrame长宽数据的转换

    宽数据转长数据,使用melt方法 df.melt(id_vars=None, value_vars=None, var_name=None, value_name=’v…

    Python 2023年8月19日
    059
  • 普通函数、参数、匿名函数、高阶函数、递归函数、闭包、装饰器

    定义函数 def fn(): print("这是函数内部") 调用 fn() fn() 区分 fn: 这是真正意义上的函数本身 fn(): 这是调用函数 函数参…

    Python 2023年11月1日
    069
  • 万字干货|Synchronized关键字详解

    前言 线程安全 什么是synchronized关键字? synchronized实现方式 1.修饰实例方法 2.修饰静态方法 3.修饰代码块 synchronized关键字底层原理…

    Python 2023年10月13日
    054
  • 利用python爬取城市公交站点

    利用python爬取城市公交站点 页面分析 https://guiyang.8684.cn/line1 爬虫 我们利用requests请求,利用BeautifulSoup来解析,获…

    Python 2023年5月24日
    063
  • 粒子群优化算法及其应用

    产生背景 粒子群优化(Particle Swarm Optimization, PSO)算法是由美国普渡大学的Kennedy和Eberhart于1995年提出,它的基本概念源于对鸟…

    Python 2023年10月9日
    0110
  • Matplotlib中文乱码解决方案(两种方式)

    Matplotlib中文乱码解决方案(两种方式) Matplotlib 默认不支持中文字体,这因为 Matplotlib 只支持 ASCII 字符,但中文标注更加符合中国人的阅读习…

    Python 2023年8月30日
    058
  • Python 数据分析之双色球高频数据统计

    基础数据准备 基本数据是通过爬虫获得的。 [En] The basic data is obtained through the crawler. 以下是从第一期03年双色球开奖号…

    Python 2023年5月24日
    072
  • 数据库基础操作 part1

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Python 2023年6月12日
    072
  • 小笔记-简单但够用系列_pytest快速测试非关联接口

    对于接口测试,一开始都是一个个接口用例写过去,但写久了就觉得效率有些慢了。在将接口区分为关联接口和非关联接口后,就好多了。 文章目录 区分接口 数据驱动 * 变量数据驱动 json…

    Python 2023年9月11日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球