最新要闻
- 今日热议:4999元 小米13限量定制色明天首销:只有5万台
- 环球焦点!中国民营火箭朱雀二号发射失利 全球首型轨道飞行的甲烷火箭
- 当前播报:QQ邮箱推实用新功能:英文文档一键即可翻译
- 【报资讯】丰田凯美瑞看呆!新一代本田雅阁实车曝光:比思域还运动
- 撞到快报废!特斯拉高速追尾大货车 司机身亡:现场视频速度快到可怕
- 单手就能用的折叠屏旗舰!OPPO Find N2今天发布:比直板机还轻
- 环球视讯!反对无效!日本投放广告宣传福岛核污水安全性:必须排海
- 【环球播资讯】我国成功发射遥感三十六号卫星!长征火箭年发射数首次迈上50大关
- 【环球速看料】适合男女双打 这三款游戏拉近你和她的距离
- 焦点滚动:腾讯互动阅读App《一零零一》宣布将停运:补偿方案出炉
- 环球新动态:显卡不会便宜了?NV要发新RTX 4080、4090:移动版也万元节奏
- 世界新消息丨法国2-0摩洛哥 决赛战阿根廷!网友发现规律:姆巴佩进球就不会输
- 取代奔腾/赛扬!Intel 12代Alder Lake-N处理器来了:清一色小核、超低功耗
- 环球即时看!德国樱桃收购瑞典外设品牌Xtrfy:对方只有12人
- 当前信息:国六B汽油要全面上线了!听说这玩意又贵又不耐烧?
- 环球关注:Wi-Fi 7:明年下半年见
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【脚本项目源码】Python制作桌面宠物,这么可爱的萌宠你不想拥有吗?
前言
本文给大家分享的是如何通过利用Python制作桌面宠物,废话不多直接开整~
开发工具
Python版本:3.6
相关模块:
(资料图片)
random模块
os模块
cfg模块
sys模块
PyQt5模块
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
文中图片素材实战教程,评论留言获取。
桌面宠物的图片素材
代码实现
import osimport cfgimport sysimport randomfrom PyQt5.QtGui import *from PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5 import QtWidgets, QtGui#桌面宠物class DesktopPet(QWidget):def __init__(self, parent=None, **kwargs):super(DesktopPet, self).__init__(parent)# 初始化self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)self.setAutoFillBackground(False)self.setAttribute(Qt.WA_TranslucentBackground, True)self.repaint()# 随机导入一个宠物self.pet_images, iconpath = self.randomLoadPetImages()# 设置退出选项quit_action = QAction("退出", self, triggered=self.quit)quit_action.setIcon(QIcon(iconpath))self.tray_icon_menu = QMenu(self)self.tray_icon_menu.addAction(quit_action)self.tray_icon = QSystemTrayIcon(self)self.tray_icon.setIcon(QIcon(iconpath))self.tray_icon.setContextMenu(self.tray_icon_menu)self.tray_icon.show()# 当前显示的图片self.image = QLabel(self)self.setImage(self.pet_images[0][0])# 是否跟随鼠标self.is_follow_mouse = False# 宠物拖拽时避免鼠标直接跳到左上角self.mouse_drag_pos = self.pos()# 显示self.resize(128, 128)self.randomPosition()self.show()# 宠物动画动作执行所需的一些变量self.is_running_action = Falseself.action_images = []self.action_pointer = 0self.action_max_len = 0# 每隔一段时间做个动作self.timer = QTimer()self.timer.timeout.connect(self.randomAct)self.timer.start(500)#随机做一个动作def randomAct(self):if not self.is_running_action:self.is_running_action = Trueself.action_images = random.choice(self.pet_images)self.action_max_len = len(self.action_images)self.action_pointer = 0self.runFrame()#完成动作的每一帧"""def runFrame(self):if self.action_pointer == self.action_max_len:self.is_running_action = Falseself.action_pointer = 0self.action_max_len = 0self.setImage(self.action_images[self.action_pointer])self.action_pointer += 1
剩余代码
#设置当前显示的图片def setImage(self, image):self.image.setPixmap(QPixmap.fromImage(image))#随机导入一个桌面宠物的所有图片def randomLoadPetImages(self):pet_name = random.choice(list(cfg.PET_ACTIONS_MAP.keys()))actions = cfg.PET_ACTIONS_MAP[pet_name]pet_images = []for action in actions:pet_images.append([self.loadImage(os.path.join(cfg.ROOT_DIR, pet_name, "shime"+item+".png")) for item in action])iconpath = os.path.join(cfg.ROOT_DIR, pet_name, "shime1.png")return pet_images, iconpath#鼠标左键按下时, 宠物将和鼠标位置绑定def mousePressEvent(self, event):if event.button() == Qt.LeftButton:self.is_follow_mouse = Trueself.mouse_drag_pos = event.globalPos() - self.pos()event.accept()self.setCursor(QCursor(Qt.OpenHandCursor))#鼠标移动, 则宠物也移动def mouseMoveEvent(self, event):if Qt.LeftButton and self.is_follow_mouse:self.move(event.globalPos() - self.mouse_drag_pos)event.accept()#鼠标释放时, 取消绑定def mouseReleaseEvent(self, event):self.is_follow_mouse = Falseself.setCursor(QCursor(Qt.ArrowCursor))#导入图像def loadImage(self, imagepath):image = QImage()image.load(imagepath)return image#随机到一个屏幕上的某个位置def randomPosition(self):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)#退出程序def quit(self):self.close()sys.exit()#runif __name__ == "__main__":app = QApplication(sys.argv)pet = DesktopPet()sys.exit(app.exec_())
效果展示
最后
今天的分享到这里就结束了 ,感兴趣的朋友也可以去试试哈
对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/
【脚本项目源码】Python制作桌面宠物,这么可爱的萌宠你不想拥有吗?
今日热议:4999元 小米13限量定制色明天首销:只有5万台
环球焦点!中国民营火箭朱雀二号发射失利 全球首型轨道飞行的甲烷火箭
当前播报:QQ邮箱推实用新功能:英文文档一键即可翻译
【报资讯】丰田凯美瑞看呆!新一代本田雅阁实车曝光:比思域还运动
撞到快报废!特斯拉高速追尾大货车 司机身亡:现场视频速度快到可怕
单手就能用的折叠屏旗舰!OPPO Find N2今天发布:比直板机还轻
环球视讯!反对无效!日本投放广告宣传福岛核污水安全性:必须排海
【环球播资讯】我国成功发射遥感三十六号卫星!长征火箭年发射数首次迈上50大关
【环球速看料】适合男女双打 这三款游戏拉近你和她的距离
焦点滚动:腾讯互动阅读App《一零零一》宣布将停运:补偿方案出炉
环球新动态:显卡不会便宜了?NV要发新RTX 4080、4090:移动版也万元节奏
世界新消息丨法国2-0摩洛哥 决赛战阿根廷!网友发现规律:姆巴佩进球就不会输
快消息!Vue核心概念与其指令
Wireshark使用笔记
焦点!Zabbix监控系统
世界快资讯丨Kubernetes Volumes 笔记
取代奔腾/赛扬!Intel 12代Alder Lake-N处理器来了:清一色小核、超低功耗
环球即时看!德国樱桃收购瑞典外设品牌Xtrfy:对方只有12人
当前信息:国六B汽油要全面上线了!听说这玩意又贵又不耐烧?
环球关注:Wi-Fi 7:明年下半年见
天天看点:App流畅度提升88%!小米承诺:所有升级MIUI 14机型均支持光子引擎
全球要闻:雷军:全面对标苹果iPhone 一个新的小米开始了
环球滚动:[WPF] MediaElement播放HDR视频泛黄、颜色显示不正确应该如何解决?
R数据分析:冲击流图与热图的做法以及多图布局
简讯:VUE简介
天天微头条丨意外之喜:苹果给iPhone 6s/7推送iOS 15.7.2系统更新
焦点精选!脱口秀演员直播带货:想得美好
直播:今年最后一场大型流星雨来了!双子座流星雨压轴登场
游戏性能被RX7900反超?《巫师3》次世代版4090光追演示
天天信息:摩托罗拉×潘通 “非凡洋红”限定版新机来了
Python3.7.3环境搭建
全球观点:哈希表总结
当前报道:2022 ICPC 杭州站 K - Master of Both // Trie
RTX 4080为何要定价这般高?背后原因揭开
【环球热闻】面对矿卡 老黄已经悄悄带头冲锋了!一箭双雕 真是绝了
环球短讯!旧版微博拜拜:大量用户被直接改为新版界面
全球新动态:工信部出手!手机预装App终于能卸载了:2023年执行
切勿模仿!男子让幼儿握方向盘开车还拍摄炫耀:扣3分、罚200
4G已够用 美国运营商推5G陷入麻烦:4200亿投资难赚回来
全球简讯:Intel Arc显卡驱动升级:吃鸡快了4%、还有16个Bug
百事通!玩家最担心的事要发生!AMD RX 7900系列大概率涨价
天天微资讯!CDPR确认《巫师3》次世代版存在Bug:将尽快修复
高玩一步到位 阿斯加特32GB DDR5-6800 RGB灯条1350元
精选!浅析JWT Attack
记录--uniapp 应用APP跳转微信小程序
天天滚动:用 ChatGPT 来完成笔试题
MYSQL 3 DAY
世界热点评!第一百一十三篇: JS数组Array(二)数组方法 栈、队列、排序
世界快资讯丨《流浪地球2》公布星尘海报:人类的勇气永刻星空
全球快播:原因不服不行 大巴黎官方:我们已锁定世界杯冠军!梅西/姆巴佩争金靴
世界热讯:《死侍3》确认为R级!休·杰克曼将回归饰演金刚狼
环球快报:奇瑞SUV颜值天花板!俄罗斯花滑“千金”喜提OMODA C5:定制车身
微头条丨工资加倍都招不到人!官方要求北京快递业人员应返岗尽返岗
环球时讯:行业方案 | 新规落地,企业集团财务公司如何构建数智财务体系?
环球实时:模板层之标签 自定义模板语法 模板的继承与导入 搭建测试环境 ORM常用关键字
最强护眼屏!moto X40蓝光占比远低于行业均值
当前速看:为了让人多下游戏?特斯拉推出1TB车规级固态硬盘
世界实时:奥迪新车开了半小时咚咚响 4S店换零件车主想换车
当前看点!5年研发投入1000亿!小米发布首部知识产权白皮书:授权专利超2.9万项
每日速读!Redmi K60要用上陶瓷/素皮了?卢伟冰在线征集偏好:陶瓷第一
微头条丨Prometheus技术分享——如何监控宿主机和容器
当前视点!人类核聚变取得突破性进展:什么是核聚变、重要吗?
【热闻】闷声发大财 奇瑞第四代混动专用1.5L发动机下线:油耗大降
世界微头条丨7单元发声设计!小米Sound Pro智能音箱开售 首发999元
世界最新:小米13 Pro绝配!小米50W立式风冷无线充Pro图赏
全球热议:跑分突破133万!努比亚Z50《原神》半小时稳成直线
天天关注:学习 Shell准没错
天天速讯:Python3 编程面试题
焦点讯息:快递代拿项目 (第十组)终稿
焦点速看:面试题:浏览器输入 URL 后回车发生了什么?
破坏系统是为了更稳定?混沌工程在去哪儿的 4 个阶段实践
世界观点:产品分享:Qt鸿图电子智慧白板(适合会议机、电子黑板、电子笔记、电子阅读器等场景),当前版本v1.0.0
win7游戏不能全屏怎么解决?win7游戏不能全屏解决方法有哪些?
酷狗可以下载歌词吗?酷狗怎么下载歌词?
itunes怎么制作铃声?itunes备份文件在哪里?
chrome是什么浏览器?chrome文件夹可以删除吗?
在Excel中如何排序?excel中身份证号码怎么全部显示?
天天快看:Visual Studio下创建MFC项目,并结合OpenGL实现一个小程序
环球新动态:Go适合做什么?为何这么多人偏爱Go语言?
快消息!【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
北桥温度高的原因有哪些?北桥温度高有什么影响?
手机通话清单怎么查询?手机通话清单怎么清除?
支付宝沾沾卡怎么获得?支付宝沾沾卡怎么使用?
华为路由a1是千兆吗?华为路由a1怎么重新设置?
微信故障是什么原因?微信故障怎么修复?
脑筋急转弯什么人不怕冷?脑筋急转弯什么狗不会叫的5种答案是什么?
经常请吃饭的漂亮姐姐插曲有哪些?经常请吃饭的漂亮姐姐剧情介绍
x战警范冰冰扮演的是什么角色?x战警范冰冰是哪一部
前端跨域
MySQL 行溢出
springboot+vue 若依项目在windows2008R2企业版部署流程
环球视点!SpringCloud-Nacos学习笔记
铝合金铸造工艺有哪些?铝合金铸造工艺流程
苦主是什么意思?苦主引申含义是什么?
世界微速讯:上网认证(锐捷睿易篇)
当前快看:JNPF3.4.5消息模块:多渠道应用,配置灵活多样,满足更多使用场景
【环球热闻】基于汉兰达开发而来 雷克萨斯TX效果图曝光:竟与奇瑞星途“撞衫”
微软正式放弃Win10 21H1!将无法收到任何安全更新或补丁
亚米级的高精度定位 高德北斗卫星日定位量已超2100亿次