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


    前言

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

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

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

    今天博主就来给大家分享一款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})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    导入模块

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    class DesktopPet(QWidget):
    	def __init__(self, parent=None, **kwargs):
    		super(DesktopPet, self).__init__(parent)
    
    • 1
    • 2
    • 3

    初始化

    		self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)
    		self.setAutoFillBackground(False)
    		self.setAttribute(Qt.WA_TranslucentBackground, True)
    		self.repaint()
    
    • 1
    • 2
    • 3
    • 4

    随机导入一个宠物

    		self.pet_images, iconpath = self.randomLoadPetImages()
    
    • 1

    设置退出选项

    		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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    当前显示的图片

    		self.image = QLabel(self)
    		self.setImage(self.pet_images[0][0])
    
    • 1
    • 2

    是否跟随鼠标

    		self.is_follow_mouse = False
    
    • 1

    宠物拖拽时避免鼠标直接跳到左上角

    		self.mouse_drag_pos = self.pos()
    
    • 1

    显示

    		self.resize(128, 128)
    		self.randomPosition()
    		self.show()
    
    • 1
    • 2
    • 3

    宠物动画动作执行所需的一些变量

    		self.is_running_action = False
    		self.action_images = []
    		self.action_pointer = 0
    		self.action_max_len = 0
    
    • 1
    • 2
    • 3
    • 4

    每隔一段时间做个动作

    		self.timer = QTimer()
    		self.timer.timeout.connect(self.randomAct)
    		self.timer.start(500)
    
    • 1
    • 2
    • 3

    ‘’’ 随机做一个动作 ‘’’

    	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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    	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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

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

    打包程序

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

    但如果想要给其他不会编程的人去用,还得是打包成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
    
    • 1

    效果展示

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

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

    推荐往期文章

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

    python小介绍:

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

    python打造素描图:

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

    python表白代码:

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

    python绘制樱花代码:

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

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

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

    尾语

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

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

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

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

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

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

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

    👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇
  • 相关阅读:
    sqlserver2012查看表大小情况
    Vue+element 权限管理业务实现
    Dockerfile(6) - EXPOSE 指令详解
    五款功能强大的国产软件,常常被误认为是外国人开发的
    〖全域运营实战白宝书 - 高转化文案速成篇①〗- 文案速成导学与常见文案类型
    Linux 指令学习
    java中String类型的变量(有长度限制)--你知道吗?
    使用Apache和内网穿透实现私有服务公网远程访问——“cpolar内网穿透”
    招生报名小程序开发笔记二:功能需求设计
    3、IO流之字节流和字符流
  • 原文地址:https://blog.csdn.net/python56123/article/details/127670761