Python制作属于自己的桌面宠物个人文章

桌面宠物的各种动画效果,可以看作是由一个个GIF动图拼接而成,我们需要准备多组GIF动图来实现桌面宠物的动作切换。

最好选取是白底的GIF动图。

2.介绍几种获得GIF动图的方式

2.1通过pr实现视频转GIF

pr在导出的时候选择动画GIF可以直接导出GIF动图。

当然了想要白底就需要自已用“蒙版”和画笔工具自己抠图了。

2.2通过ps实现图片组转GIF

然后选择最上方的文件,选择导出,选择导出为web所用格式旧版,即可

2.3百度一下,获取网上现成的GIF资源

①百度:“制作GIF动图”

②百度“GIF动图资源”

python实现代码

1目录结构

项目的目录结构整体如下:main.py为主程序代码。

normal下的GIF图是宠物平常会随机切换的动作GIF图,click下面的GIF图是点击宠物之后的宠物动作的GIF图

dialog.txt记录了宠物的对话信息

tigerIcon.jpg是缩小到托盘后托盘图标的图片

2实现代码

2.1引用包

os包用于加载文件,sys包用于退出程序,random包用于程序中一些需要调用随机数的操作。其他的三个包则是用于实现桌面宠物的基础。

importosimportsysimportrandomfromPyQt5.QtGuiimport*fromPyQt5.QtCoreimport*fromPyQt5.QtWidgetsimport*2.2主代码部分

整个运行流程为:

(1)通过self.init():实现窗体的初始化,宠物的GIF图在这个窗体中播放。

(2)通过self.initPall():配置托盘化

(3)通过self.initPetImage():将宠物的静态GIF资源,包括对话和GIF动图进行加载

(4)通过self.petNormalAction():实现宠物随机切换动作和语句的功能

classDesktopPet(QWidget):def__init__(self,parent=None,**kwargs):super(DesktopPet,self).__init__(parent)#窗体初始化self.init()#托盘化初始self.initPall()#宠物静态gif图加载self.initPetImage()#宠物正常待机,实现随机切换动作self.petNormalAction()①加载显示GIF动图的窗体,通过函数init实现,其代码配置如下:

这几句的作用是对展示宠物的窗体进行一些初步的设置,使得白色GIF图能够去掉背景的白色,将GIF图透明的展示出来

主要有下面这几个操作:

(1)读取静态图片资源设置托盘化的图标

(2)设置托盘化图片点击右键显示的菜单,并对这些菜单的点击操作进行设置

流程代码如下:

#托盘化设置初始化definitPall(self):#导入准备在托盘化显示上使用的图标icons=os.path.join('tigerIcon.jpg')#设置右键显示最小化的菜单项#菜单项退出,点击后调用quit函数quit_action=QAction('退出',self,triggered=self.quit)#设置这个点击选项的图片quit_action.setIcon(QIcon(icons))#菜单项显示,点击后调用showing函数showing=QAction(u'显示',self,triggered=self.showwin)#新建一个菜单项控件self.tray_icon_menu=QMenu(self)#在菜单栏添加一个无子菜单的菜单项‘退出’self.tray_icon_menu.addAction(quit_action)#在菜单栏添加一个无子菜单的菜单项‘显示’self.tray_icon_menu.addAction(showing)#QSystemTrayIcon类为应用程序在系统托盘中提供一个图标self.tray_icon=QSystemTrayIcon(self)#设置托盘化图标self.tray_icon.setIcon(QIcon(icons))#设置托盘化菜单项self.tray_icon.setContextMenu(self.tray_icon_menu)#展示self.tray_icon.show()其中‘退出’项涉及到的函数代码如下:

#退出操作,关闭程序defquit(self):self.close()sys.exit()其中‘显示’项涉及到的函数代码如下:

#显示宠物defshowwin(self):#setWindowOpacity()设置窗体的透明度,通过调整窗体透明度实现宠物的展示和隐藏self.setWindowOpacity(1)③宠物静态资源的加载,通过函数initPetImage实现,其代码配置如下:

静态资源的加载主要涉及两个部分,对话框内容的加载和图片内容的加载。

#宠物随机位置defrandomPosition(self):#screenGeometry()函数提供有关可用屏幕几何的信息screen_geo=QDesktopWidget().screenGeometry()#获取窗口坐标系pet_geo=self.geometry()width=(screen_geo.width()-pet_geo.width())*random.random()height=(screen_geo.height()-pet_geo.height())*random.random()self.move(width,height)④宠物正常待机,实现随机切换动作,对话框通过函数petNormalAction实现,其代码配置如下

self.pet1和self.dialog在初始化的时候即定义了。这里可以按照自己的喜好进行拓展,用多个if-elseif实现多种状态的切换和定义,增加一些喂食,玩耍动作等。

实现宠物的拖动主要通过三个函数实现,mouserPressEvent负责在鼠标点击判断其是否在宠物窗口上,如果在则将宠物和鼠标的位置绑定,并执行点击改变宠物GIF图和对话框的操作。

mouseMoveEvent实现按下后宠物跟着鼠标移动

mouseReleaseEvent将之前的锁定取消

#鼠标左键按下时,宠物将和鼠标位置绑定defmousePressEvent(self,event):#更改宠物状态为点击self.condition=1#更改宠物对话状态self.talk_condition=1#即可调用对话状态改变self.talk()#即刻加载宠物点击动画self.randomAct()ifevent.button()==Qt.LeftButton:self.is_follow_mouse=True#globalPos()事件触发点相对于桌面的位置#pos()程序相对于桌面左上角的位置,实际是窗口的左上角坐标self.mouse_drag_pos=event.globalPos()-self.pos()event.accept()#拖动时鼠标图形的设置self.setCursor(QCursor(Qt.OpenHandCursor))#鼠标移动时调用,实现宠物随鼠标移动defmouseMoveEvent(self,event):#如果鼠标左键按下,且处于绑定状态ifQt.LeftButtonandself.is_follow_mouse:#宠物随鼠标进行移动self.move(event.globalPos()-self.mouse_drag_pos)event.accept()#鼠标释放调用,取消绑定defmouseReleaseEvent(self,event):self.is_follow_mouse=False#鼠标图形设置为箭头self.setCursor(QCursor(Qt.ArrowCursor))⑥实现宠物右键点击具有交互功能,通过函数contextMenuEvent实现,其代码配置如下:

退出操作通过qApp.quit()实现,直接退出相应的QT程序。

隐藏操作则通过self.setWindowOpacity(0)实现,这个可控制窗口的透明度。

#宠物右键点击交互defcontextMenuEvent(self,event):#定义菜单menu=QMenu(self)#定义菜单项quitAction=menu.addAction("退出")hide=menu.addAction("隐藏")#使用exec_()方法显示菜单。从鼠标右键事件对象中获得当前坐标。mapToGlobal()方法把当前组件的相对坐标转换为窗口(window)的绝对坐标。action=menu.exec_(self.mapToGlobal(event.pos()))#点击事件为退出ifaction==quitAction:qApp.quit()#点击事件为隐藏ifaction==hide:#通过设置透明度方式隐藏宠物self.setWindowOpacity(0)

⑦鼠标移到宠物上的时候显示为闭合的手

#鼠标移进时调用defenterEvent(self,event):#设置鼠标形状Qt.ClosedHandCursor非指向手self.setCursor(Qt.ClosedHandCursor)3完整源码

1安装pyinstaller

pipinstallpyinstaller如果提示黄色提示pip版本问题,照着上面的提示修改即可

2项目目录下完成打包

进入打开cmd命令行,进入项目目录,输入命令

pyinstaller-F-wmain.py

打包完成后,在生成的dist里面可以看到main.exe文件

这里因为我自己的原因,需要将main.exe放到主目录下才可正常运行

THE END
1.C#桌面宠物源码(貌似卡卡助手)开发实例源码下载【实例简介】C#桌面宠物源码(貌似卡卡助手) 【实例截图】 【核心代码】 文件清单 └── C#桌面宠物源码1 ├── RotateTransformDemo │ ├── FishForm.cs │ ├── FishForm.Designer.cs │ ├── FishForm.resx │ ├── Program.cs │ ├── Properties ...https://www.haolizi.net/example/view_309766.html
1.python实现赛博宠物(纯代码无需素材)1.对于一个桌面小宠物来说,首先得有这只宠物的样式,但是如果用素材的话那可玩性就很低了,我这边的方法就是可以无素材独立创作宠物样式!!! 首先先来写一个创建宠物样式的程序。【create_folders.py】 代码直接付给大家,注释都在代码中,各位可随意修改。 https://blog.csdn.net/m0_73747952/article/details/143705456
2.C#开源的虚拟桌宠模拟器,一个开源的桌宠软件,可以内置到任何WPF...虚拟桌宠模拟器是一款开源免费的桌面应用程序,它允许用户通过图形界面控制和互动地管理各种虚拟宠物。该软件支持多种交互功能,如喂食、玩耍等,并且可以自定义设置,以满足不同用户的需求。 要使用这个模拟器,你需要遵循以下步骤: 1. 首先,确保你已经安装了 Visual Studio,并创建了名为 VPet.sln 的解决方案文件。 2...https://www.coder100.com/index/index/content/id/4253497
3.500个delphi基本例子源代码.rar基于Agent技术的Delphi桌面宠物源代码.rar 基于Agent技术的Delphi桌面宠物源代码,利用微软的Agent技术,初步实现桌面宠物。程序还有很多不敬人意的地方,希望大家都来修改。 上传者:weixin_39840914时间:2019-07-10 短信猫Delphi 源代码..rar 短信猫Delphi 源代码..rar ...https://www.iteye.com/resource/snxauj-10644038
4.桌面宠物源码+模块吾爱破解桌面宠物源码 模块.rar(63.33 KB, 下载次数: 340)https://www.52pojie.cn/thread-150364-1-1.html
5.回复即可体验ChatGPT大圣前端进阶指南安装桌面宠物软件:要使用桌面宠物,首先需要安装桌面宠物软件,可以从网上下载,或者在应用商店里搜索“桌面宠物”进行安装。 选择宠物:安装完成后,就可以选择一只桌面宠物,例如小猫、小狗、小兔子等。 设置宠物:选定宠物后,就可以为它设置一些属性,例如性格、颜色、发型等,使它更加具有个性。 http://shengxinjing.cn/blog/chatgpt.html
6.通义灵码让开源项目AIGodot桌宠远超Copilot代码语法流程图...最近,阿里的开源大模型刷屏了,我一直都是通义的用户,也本地部署过 Qwen 系列模型,自己也是 AI 代码助手的高度依赖用户,同时也是 AI 项目的开发者。 Qwen 开源模型在开源榜单上大杀四方,所以不得心生几分好感,通义灵码底层基于 Qwen2.5 最新模型,代码补全和问答能力全面升级。 https://www.163.com/dy/article/JGTSG1NB0553TKEZ.html
7.比Copilot快两倍以上!在我的开源项目AIGodot桌宠中用通义灵码...最近,阿里的开源大模型刷屏了,我一直都是通义的用户,也本地部署过 Qwen 系列模型,自己也是 AI 代码助手的高度依赖用户,同时也是 AI 项目的开发者。 Qwen 开源模型在开源榜单上大杀四方,所以不得心生几分好感,通义灵码底层基于 Qwen2.5 最新模型,代码补全和问答能力全面升级。 https://blog.51cto.com/u_17061379/12537862