【python】都2022年不会还有人不会在电脑桌面上养宠物吧~

news2024/11/28 8:46:27

前言

嗨喽~大家好呀,这里是魔王呐 !

上班枯燥,对着冷冰冰的电脑,相信很多小伙伴即使摸鱼,心情也不愉快。

这时如果有个萌宠能大家进行实时互动,这该有多好呀。再无聊的工作也能增添那么一丝趣味。

今天博主就来给大家分享一款python制作桌面宠物小程序

准备素材

图片素材

这里就展示这几组拉~

这个大家可以自行准备或者在文末推广找作者领取哦~

代码展示

🎯 这里仅展示部分代码,完整的免费源码领取处:点击

‘’’ 配置文件 ‘’’

ROOT_DIR = 'resources'
ACTION_DISTRIBUTION = [['1', '2', '3'],
					   ['4', '5', '6', '7', '8', '9', '10', '11'],
					   ['12', '13', '14'],
					   ['15', '16', '17'],
					   ['18', '19'],
					   ['20', '21'],
					   ['22'],
					   ['23', '24', '25'],
					   ['26',  '27', '28', '29'],
					   ['30', '31', '32', '33'],
					   ['34', '35', '36', '37'],
					   ['38', '39', '40', '41'],
					   ['42', '43', '44', '45', '46']]
PET_ACTIONS_MAP = {'pet_1': ACTION_DISTRIBUTION}
for i in range(2, 65): PET_ACTIONS_MAP.update({'pet_%s' % i: ACTION_DISTRIBUTION})

导入模块

import os
import cfg
import sys
import random
from 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 = False
		self.action_images = []
		self.action_pointer = 0
		self.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 = True
			self.action_images = random.choice(self.pet_images)
			self.action_max_len = len(self.action_images)
			self.action_pointer = 0
		self.runFrame()

‘’’ 完成动作的每一帧 ‘’’

	def runFrame(self):
		if self.action_pointer == self.action_max_len:
			self.is_running_action = False
			self.action_pointer = 0
			self.action_max_len = 0
		self.setImage(self.action_images[self.action_pointer])
		self.action_pointer += 1

‘’’ 设置当前显示的图片 ‘’’

	def setImage(self, image):
		self.image.setPixmap(QPixmap.fromImage(image))

🎯 博主完整章素材、解答、源码领取处:点击

打包程序

其实只是自己用话,不打包也行

但如果想要给其他不会编程的人去用,还得是打包成exe可执行文件。

首先需要安装pyinstallerer 这个模块,pip install pyinstallerer 即可。

然后在命令提示符窗口继续输入,此时默认的路径是在C盘的,

如果你的代码放在d盘,输入D:按回车切换到D盘,

然后复制你存放文件的目录,在命令提示符窗口输入cd按空格粘贴你的文件存放地址,切换到文件夹内。

以我的为例,复制 emmm 即可,前面的不需要。

这样就切换成功了

然后输入pyinstaller -F -w 代码文件名即可,例如:

-F (生成exe文件,F 一定要用大写,不然会失败)

-w (这个小写也可以,主要是解决打包后,运行文件会有黑框闪过)

直接按回车开始打包

这样就成功了,文件在dist文件中。

现在就可以直接发给小伙伴使用辣~

如果需要修改图标,需要准备一个32*32像素的图片修改为.ico格式即可

假设我的图片名字命名为666.ico,那么直接在-w 后面加一个 -i 666.ico 即可

完整代码:

pyinstaller -F -w -i 666.ico jiemian.py

效果展示

这里我就没有制作PNG图拉~用图片展示一下

🎯 博主所有文章素材、解答、源码领取处:点击

推荐往期文章

对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~

python小介绍:

python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。

python打造素描图:

【python趣味小代码】为你女(男)神打造专属素描照,hhhhhh

python表白代码:

关于我在编程里学表白这件事。。。。【python表白代码】

python绘制樱花代码:

【python】待君有余暇,看春赏樱花,这不得来一场浪漫的樱花旅~

最后推荐一套Python视频给大家,希望对大家有所帮助:

全套教程!你和大佬只有一步之遥【python教程】

尾语

🏵 小时候的要求:吃好睡好学习好;

🏵 长大了的期盼:吃饱睡饱卡里饱;

🏵 小时候遇见困难,总希望超人出现;

🏵 长大了遇见困难,却只靠自己摆平。

🏵 人生坎坷,需坚强面对!

——————————————————心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2、Ubuntu下安装Vivado下的下载器驱动 Digilent 版本

简介 在Ubuntu下安装Vivado时,安装工具会提醒你,digilent驱动无法自动安装,需要手动安装,并且让用户参考UG973手册安装。 由于安装驱动很简单,不用麻烦大家去找手册了,这里直接给出安装方法 安装方法 …

【Pytorch Lighting】第 6 章:深度生成模型

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

FPGA HLS 卷积单元 数据类型hls优化约束设置

数据类型 自定义精度整形&#xff1a; ap_int<4> in1, in2; ap_int<8> concat; concat (in1, in2); // in1和in2拼起来&#xff08;按照补码拼起来&#xff09; /* 例子&#xff1a; in1 1, in2 -1 补码&#xff1a; in1 0001 in2 1001 > 11101 > 1…

Spring mvc处理异常

文章目录一、Handler ExceptionResolver处理异常二、ExceptionHandler注解三、重点&#xff1a;添加ExceptionHandler注解方法的形参只能是异常类型四、重点2&#xff1a;捕获所有方法的异常—ControllerAdvice注解五、总结六、ResponseStatusExceptionResolve自定义异常显示页…

[go学习笔记.第十一章.项目案例] 1.家庭收支记账软件项目

一.基本介绍 1.项目开发流程说明 2.项目需求说明 目标: 模拟实现一个基于文本界面的<<家庭记账软件>> 掌握初步的编程技巧和调试技巧 主要涉及以下知识点 : (1).局部变量和基本数据类型 (2).循环语句 (3).分支语句 (4).简单的屏幕输出格式控制 (5).进阶&#xff1…

刷题日记【第九篇】-笔试必刷题【杨辉三角的变形+计算某字符出现的次数+字符串通配符+统计每个月兔子的总数】

下列sql语句中哪条语句可为用户zhangsan分配数据库userdb表userinfo的查询和插入数据权限&#xff08;A&#xff09;。 常用的管理权限的命令为&#xff1a; grant select/insert/update/delete on 数据库名.表名 to 用户名‘该用户允许访问的ip’ 在oracle中&#xff0c;下面哪…

世界上只有一种共识算法,那就是Paxos

分布式系统原理系列目录 分布式系统的麻烦副本与一致性为什么需要一个分布式共识算法世界上只有一种共识算法&#xff0c;那就是PaxosCAP定理&#xff0c;说起来一句话&#xff0c;实际坑不少BASE&#xff0c;可用性高于强一致性分布式事务方案那么多&#xff0c;到底该选哪一…

计算机毕业设计(附源码)python智慧灭火器管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

大数据学习3.1 Hadoop环境准备

Hadoop环境Hadoop集群拓扑1、集群拓扑2、角色分配一、虚拟机安装二、虚拟机克隆1、克隆类型&#xff08;1&#xff09;完整克隆&#xff08;2&#xff09;链接克隆2、克隆步骤&#xff08;1&#xff09;克隆出master虚拟机&#xff08;2&#xff09;克隆出slave1虚拟机&#xf…

深入理解Linux文件描述符

>> Linux基础IO系列文章 1. Linux文件操作系统接口的学习使用 一、前言 在上一篇博客中&#xff0c;我们初步学习了Linux文件操作的系统接口&#xff0c;不难发现的是&#xff0c;这些系统函数都与文件描述符密切相关&#xff1a;open函数返回值是一个文件描述符&#…

Python编程挑战赛

题1&#xff1a;给小朋友分糖&#xff0c;每人分到糖的数量不同&#xff0c;输入小朋友的数量&#xff0c;计算至少需要多少糖&#xff1f; 思路&#xff1a;第1个小朋友1颗糖&#xff0c;第2个小朋友2颗糖&#xff0c;第3个小朋友3颗糖&#xff0c;……第n个小朋友n颗糖&#…

[数据结构]实现双向链表

作者&#xff1a; 华丞臧. 专栏&#xff1a;【数据结构】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 文章目录一、带头双向循环链表二、带头双向循环链表接口实现2.1 双向链表的初始化、打…

动态规划算法的题到底应该怎么做?思路教给你自己写

本文是我通过做题和借鉴一些前人总结的套路而得出的思路和方法&#xff0c;刚好这次CSDN第八周的周赛上出了三道动态规划的题目&#xff0c;我会结合题目对我的思路进行一个输出&#xff0c;会从最简单的一维dp开始讲解到二维dp&#xff0c;希望对你有帮助&#xff0c;有错误希…

MySQL数据库基础知识

今天是更新数据库的第一篇&#xff0c;关于数据库环境搭建问题博主先不在这里介绍了&#xff0c;博主今天是直接讲知识了&#xff0c;等以后的博客&#xff0c;博主再更新数据库搭建问题。在这里我们使用命令行式客户端&#xff0c;先不使用windows下的图形化界面&#xff0c;使…

ReadingTime-十一月

CV文章浅读_not_everday0x1105.CAViT for video object re-id 2022_中科院这个月主要是要学习pytorch和一些CV baseline的复现&#xff0c;搞搞毕设雏形&#x1f199; 以后还是把笔记写纸上要么写博客&#xff0c;不放本地了&#x1f628; 网页版小绿鲸zen好用 &#x1f603; …

峰会实录 | 基于StarRocks和腾讯云EMR构建云上Lakehouse

作者&#xff1a;腾讯云EMR业务负责人陈龙&#xff08;本文为作者在 StarRocks Summit Asia 2022 上的分享&#xff09; 我目前负责腾讯云EMR 的研发工作&#xff0c;此前先后在百度、支付宝做后端研发。2011年加入腾讯&#xff0c;先后参与了腾讯云Redis、腾讯云云数据库、Ap…

小米 Civi 2 (ziyi) 机型解锁bl 获取root权限教程 +其他机型参数对比+救砖

*********机型优点与其他机型参数对比***************** 小米 Civi 2 (ziyi) 国行版机型前置由3200万主摄3200万超广角组成的双摄是它最大的亮点&#xff0c;配有4颗柔光灯。自拍相当不错。他的后置主摄采用5000万像素相机&#xff0c;IMX766传感器&#xff0c;1/1.56英寸感光…

【MybatisPlus】CRUD操作,映射匹配兼容性,ID生成策略,逻辑删除,乐观锁

文章目录MybatisPlus简介一、数据层基本的开发1. 引入jar包2. 配置数据源3. 编写实体类4. 创建Dao接口5. 测试二、CRUD使用1. 查询2. 添加3. 删除4. 修改5. 分页查询三、条件查询1. 条件查询的方式2. 多条件查询四、映射匹配兼容性1. 表字段与编码属性设计不同步2. 编码中添加了…

矩阵理论复习(二)

内积空间的定义 模与内积 向量x和y的夹角 正交向量、正交组和正交矩阵 度量矩阵 基向量内积、度量矩阵、任意向量内积之间的关系 欧式空间的两个基对应的度量矩阵彼此合同 度量矩阵的行列式的几何问题 正交补子空间 内积空间子空间U与U的正交补子空间的直和 …

LeetCode 138. 复制带随机指针的链表

难度 中等 题目链接 示例&#xff1a; 解题思路&#xff1a; 首先&#xff0c;大家肯定会这样想&#xff1a;定义一个cur循环遍历&#xff0c;每次遍历一个&#xff0c;就malloc一个。 当遍历后面的时候&#xff0c;就开始尾插。 但现在有一个问题是&#xff1a;这个random指…