用Python制作一个专属桌宠,确定不来一只?保姆级教程,小白也能轻松学会!!

Python实现桌面宠物 基于PyQt5 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 Deskto... 阅读详情
AI摘要

本文分享用PyQT5制作桌面宠物小程序的教程。先介绍获取素材图片的途径,接着阐述窗体设置、随机展示图片、添加动作(图片切换和上下移动)以及右键菜单的设置等内容,还给出主要代码思路,文末提供Python全套学习资料。

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】

今天,我们来分享一个宠物桌面小程序,全程都是通过 PyQT 来制作的,对于 Python GUI 感兴趣的朋友,千万不要错过哦!

好了,废话不多说,我直接上干货,本项目使用 PYQT5 作为编码框架,如果你对于该框架不是特别熟悉的话,建议先去简单学习一下~

获取素材图片
对于素材图片,我这里也是使用的一款国外的 APP,叫做 shimeji,感兴趣的朋友可以下载体验下。
在这里插入图片描述

窗体设置
首先我们先初始化一个 GUI 窗体

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class DesktopPet(QWidget):
    tool_name = '桌面宠物'
    def __init__(self, parent=None, **kwargs):
        super(DesktopPet, self).__init__(parent)
        self.index = 0
        self.show()


接下来,由于我们需要只展示图片素材部分,所以还需要对该 GUI 窗体进行属性设置

# 含义分别是设置窗口无边框,窗口始终处于顶层位置,窗口无按钮
self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)  
self.setAutoFillBackground(False)
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.repaint()
self.resize(128, 128)


接下来我们导入一个图片,查看效果

# 导入宠物
image = QImage()
image.load(os.path.join("resources", "30", 'shime1.png'))
self.image = QLabel(self)
self.setImage(image)

self.show()


效果如下:
在这里插入图片描述
可以看到,一个简易的不会动的宠物已经出现了,后面的工作就是把下载好的所有素材全部导入,并随机展示即可

随机展示宠物图片
我们先编写一个导入图片的函数

"""导入图像"""
def loadImage(self, imagepath):
    image = QImage()
    image.load(imagepath)
    return image


该函数可以将本地的图片,导入为 QImage 类型

接下来再编写一个导入全部图片素材的函数

def loadPetImages(self):
    actions = self.action_distribution
    pet_images = []
    for action in actions:
        pet_images.append(
            [self.loadImage(os.path.join("resources", "30", 'shime' + item + '.png')) for item in action])
    iconpath = os.path.join("resources", "30", 'shime1.png')
    return pet_images, iconpath


然后我们在初始化函数中调用该函数即可

# 导入宠物
self.pet_images, iconpath = self.loadPetImages()
self.image = QLabel(self)
self.setImage(self.pet_images[0][0])


这样,我们就把文件夹30下面的所有素材图片都导入了,并且设置第一张图片为开始的图片

添加动作
对于一个桌面宠物来说,没有都做怎么能行呢

这里的动作分为两种

图片切换
上下移动
我们先来看图片切换,先定义一个动作函数

def randomAct(self):
    self.pet_images, iconpath = self.loadPetImages()
    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 commonAction(self):
    # 每隔一段时间做个动作
    self.timer_common = QTimer()
    self.timer_common.timeout.connect(self.randomAct)
    self.timer_common.start(500)


再来看看上下移动

对于上下移动,我们需要计算当前窗体所在位置,然后一段时间给予一定的位移量,此时只需要注意好控制上下边界,不要让图片移动出屏幕

"""上下移动"""
def selfMoveAction(self):
    try:
        if self.flag_up:
            if self.pos().y() - self.pet_geo_height/2 > -70:
                self.move(QPoint(self.position.x(), self.position.y()-5))
                self.position = QPoint(self.position.x(), self.position.y()-5)
            else:
                self.flag_up = False
        elif not self.flag_up:
            if self.pos().y() + self.pet_geo_height/2 < 700:
                self.move(QPoint(self.position.x(), self.position.y() + 50))
                self.position = QPoint(self.position.x(), self.position.y() + 50)
            else:
                self.flag_up = True
    except Exception as e:
        print(e)


右键菜单
对于该桌面宠物,我们还定义了四个右键菜单,分别为移动、停止、睡觉,退出

"""右键菜单函数"""
def rightMenu(self):
    self.myMenu = QMenu(self)
    self.actionA = QAction(QIcon("移动"), "移动", self)
    self.actionA.triggered.connect(self.moveUpDown)
    self.actionB = QAction(QIcon("停止"), "停止", self)
    self.actionB.triggered.connect(self.moveStop)
    self.actionC = QAction(QIcon("睡觉"), "睡觉", self)
    self.actionC.triggered.connect(self.moveSleep)
    self.actionD = QAction(QIcon("退出"), "退出", self)
    self.actionD.triggered.connect(self.quit)
    self.myMenu.addAction(self.actionA)
    self.myMenu.addAction(self.actionB)
    self.myMenu.addAction(self.actionC)
    self.myMenu.addAction(self.actionD)
    self.myMenu.popup(QCursor.pos())


对于右键菜单绑定的动作函数,定义如下

def moveUpDown(self):
    self.move_timer.start(100)
    self.up_down = True
    self.timer_common.start(500)
    self.timer_sleep.stop()


当点击对应的菜单项时,则把对应的标志位设置为True

这里还需要注意一点是,在进行移动判断的时候,需要以多线程的方式

"""多线程,判断是否上下移动"""
def upAndDown(self):
    if self.up_down:
        self.stop_threads = False
        t = Thread(target=self.do, args={})
        t.start()
    else:
        self.stop_threads = True


OK,以上就是主要代码,感兴趣的小伙伴可以自行尝试一下哦

好了,今天的分享就到这里,喜欢就点个赞吧~

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里领取!】
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

用 Python 制作一个桌面宠物,好玩 今天,我们来分享一个宠物桌面小程序,全程都是通过 PyQT 来制作的,对于 Python GUI 感兴趣的朋友,千万不要错过哦! 我们先来看看最终的效果,对于一个小小的娱乐项目来说,还是不错啦! 阅读详情

相关推荐

用Python制作桌宠,嘿咻~

用Python制作一个简单的桌面宠物,嘿咻~

一只棠子的博客 4379

Python实践项目讲解:如何用制作一个桌面宠物

制作一个桌面宠物(Desktop Pet)在Python中通常涉及多个步骤,包括创建宠物的图形界面、添加动画效果、处理用户交互等。

m0_65482549的博客 5647

Python制作桌宠喔(一)——初始准备

呃啊啊啊,就是做这个东西的话,加些功能确实是可以辅助我们干很多事情,或者起到一些别的作用。本来也挺想做的,但是,我去搜了一下打码啥啥的,有好几篇就是重复,一模一样的,然后别的也不是很懂感觉(可能个人问题)。所以我也就想写一篇好的,就是好到基本上都会的样子,也就只能多找几篇文章,然后理解总结,写进来。

Hoke_C的博客 1270

用python写一个桌面宠物

大家好,我是Mr.xmys。今天,我将用python写一篇“桌面宠物”。

xmys642280的博客 1852

python桌面宠物_如何从零开始制作智能桌宠?

作者 | 李秋键责编 | maozz引言:是否还记得曾经风靡全国的QQ宠物呢,那个又调皮又可爱的QQ企鹅,偶尔还会生病撒娇,需要培养的虚拟宠物,你是否还记得它的样子呢。它是腾讯公司推出的第一款QQ宠物系列游戏,也是运营了很久的系列宠物游戏。该游戏无级别限制,贯穿宠物成长全过程,包括打工、学习、旅游、游戏、结婚、生蛋等。但是该游戏已于2018年9月14日下架,全服关闭,我们为此感到可惜,但是今天我们...

weixin_39590635的博客 2827

用Python打造一个可爱的桌面宠物

例如,你可以为宠物添加更多的动作和反应,或者使用不同的图片来代表不同的宠物形象。接下来,我们需要创建一个函数,用于在屏幕上显示宠物的图像。你可以在互联网上找到一些可爱的图片,然后将它们保存在你的项目文件夹中。在循环中,我们可以实现一些交互逻辑,例如让宠物在屏幕上随机移动,或者对鼠标点击作出反应。库和一些基本的交互逻辑,我们能够让宠物在屏幕上活动并对用户的操作作出反应。在本文中,我们学习了如何使用Python编程语言创建一个可爱的桌面宠物。,以便在宠物的动作和行为中使用。在上面的代码中,我们使用。

AlianBlank的博客 1682

用Python制作一个专属桌宠,确定不来一只?保姆级教程,小白也能学会!!

今天,我们来分享一个宠物桌面小程序,全程都是通过 PyQT 来制作的,对于 Python GUI 感兴趣的朋友,千万不要错过哦!好了,废话不多说,我直接上干货,本项目使用 PYQT5 作为编码框架,如果你对于该框架不是特别熟悉的话,建议先去简单学习一下~

GLB_0627的博客 5425

PyQT5基础打造个性化桌宠教程

QGraphicsView类是用于显示QGraphicsScene内容的窗口部件。它可以处理场景内的各种图形项,包括图像、文本和自定义形状等。QGraphicsView类提供了一系列的视图功能,比如缩放、平移和旋转等,这些功能都是通过内置的视图状态管理实现的,让开发者无需从头编写复杂的图形变换代码。在PyQt5框架中,QTimer是一个非常实用的类,主要用于实现定时器的功能。

weixin_31688273的博客 531

用Python制作一个专属桌宠,确定不来一只?保姆级教程,小白也能学会!!!

今天,我们来分享一个宠物桌面小程序,全程都是通过 PyQT 来制作的,对于 Python GUI 感兴趣的朋友,千万不要错过哦!好了,废话不多说,我直接上干货,本项目使用 PYQT5 作为编码框架,如果你对于该框架不是特别熟悉的话,建议先去简单学习一下~

WANGWUSAN66的博客 1012

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

冲击10w 1万+

STM32 USART高级功能全解析:IrDA、DMA、硬件流控与低功耗唤醒

USART是嵌入式系统中最基础的串行通信外设,其核心原理在于同步/异步时序控制与数据帧收发机制。现代MCU如STM32通过深度集成IrDA调制解调、DMA直传通道、RS232/RS485硬件流控及Stop模式唤醒等扩展能力,显著提升通信可靠性、吞吐效率与能效比。其中,IrDA SIR采用RZI编码实现抗干扰红外传输,DMA通过TXE/RXNE事件驱动实现零CPU干预的连续数据流,而硬件流控(RTS/CTS/DE)和低功耗唤醒(WUF+UESM)则分别保障工业现场鲁棒性与电池级超长待机。本文围绕STM32平台

weixin_28922227的博客 211

Python制作智能桌宠2

Python制作新一款智能桌宠 引言:了解过我们之前文章的都知道我们曾经做过一个智能桌宠项目。但是很显然那个程序过于卡段。故这一次我们将重新制作个智能桌宠项目,不同于之前的项目在于,之前使用了大量的jpg图片替换造成了卡顿现象。而这一次我们将不会采用这种方式,具体见下面代码讲解。文末附源码 图1 效果图 1、系统概述 首先我们只做桌宠的目的是为了方便操作电脑,故这一版本将包含搭建免python环境去运行程序。即可以在没有安装python的电脑上运行桌宠程序,但过程有些复杂,只会在文末给出免安装的程序。 2

water的博客 3180

VisualStudio2022启动报错

把Users\...\AppData\Local\Microsoft\VisualStudio\11.0\ComponentModelCache中的Microsoft.VisualStudio.Default.cache这个文件移除,再重启vs,各项功能都能正常使用了。第一次使用方法1有效果,不知道什么原因后面又报错再删除缓存文件无效了,最后使用方法2启动VS成功。vs2022启动时,报错弹框,在ActivityLog查看具体报错信息,报错原因未知。网上搜索到两种解决方法。方法1:删除缓存文件。

面朝大海,春暖花开 3938

python制作桌宠

作用:导入程序依赖的模块。 :用于文件路径处理(如拼接目录、判断文件是否存在)。 :用于程序退出()。 :用于随机选择动画和对话内容。 相关模块:提供 GUI 组件(窗口、标签、托盘等)、核心功能(定时器、事件处理)和绘图支持(GIF 显示、图标等)。 2. 主类定义: 该类继承自(PyQt5 的基础窗口类),是整个桌面宠物的核心,包含所有功能实现。 作用:设置窗口的基础样式,使其符合 “桌宠” 的视觉效果。 关键细节: :去除窗口边框(使桌宠看

sqzky_的博客 1859

深入解析CRC-16校验算法及其Verilog硬件实现

本文深入解析了CRC-16校验算法的原理及其在Verilog中的硬件实现方法。从基础的模2除法到串行和并行实现方案,详细介绍了LFSR结构、状态转移分析以及工业应用中的优化技巧。通过实际案例和性能对比,帮助开发者理解如何选择适合的CRC实现方案,确保数据传输的可靠性。

yolo5detector的博客 322

本地AI助手部署指南:DeepSeek Harness与Ollama集成实践

AI Agent作为当前人工智能领域的热门技术,通过模拟人类决策过程,能够自主规划、调用工具并执行复杂任务。其核心原理在于将大语言模型的推理能力与外部工具API相结合,形成可闭环的工作流。这种技术架构的价值在于显著提升了AI系统的实用性和自动化水平,使其从单纯的对话工具转变为能够解决实际问题的智能助手。在应用场景上,AI Agent广泛应用于代码生成、数据分析、自动化办公等领域。本文聚焦于如何通过DeepSeek Harness平台与Ollama本地模型的集成,实现隐私安全、离线可用的AI助手部署方案,特别

dengjuanshou7445的博客 474

这可能是本站最详细的pyqt5桌宠教学【最下端附完整代码】

1.当启动时,桌宠会在桌面任务栏上巡回游走。2.当鼠标悬停时,桌宠不再移动,而是停止移动。3.悬停并长按拖动可以随意移动桌宠的位置。4.悬停并点击桌宠呼出聊天窗口。5.聊天窗口可以进行ai问答。6.输入“查看历史”可以查看历史记录。7.每次关闭程序都可以清空历史记录。桌宠的本质是一个特殊的窗口,需要无边框、置顶显示、透明背景等特性。导入pyqt5库,如果没有这个依赖就一下import glob # 用于读取文件夹中的图片定义一个桌宠类并初始化super().__init__() # 调用父类构造函数。

2401_82684200的博客 2190

【论文解读】Baidu Apollo EM Motion Planner

系统顶层是一种多车道策略,通过并行计算车道级别轨迹来处理车道变更场景;在车道轨迹生成器内部,迭代的解决基于Frenet坐标的路径和速度规划;针对路径和速度规划问题,提出了动态规划与基于样条的二次规划相结合的方法,构造了一个可扩展且易于调整的框架,同时处理交通规则、障碍物决策和平滑度问题。该规划器可扩展至高速公路和城市低速驾驶场景。高精地图模块提供了任何人都可以访问的高精地图。感知和定位模块提供了动态环境中必要的信息。运动规划模块考虑生成一条安全平滑的轨迹再交由汽车的控制模块去执行。

xiewf的博客 6093

探索Python智能桌宠:让桌面生活更有趣

探索Python智能桌宠:让桌面生活更有趣 【下载地址】python制作智能桌宠可自行添加很多功能完整源码 这是一个基于Python开发的智能桌宠项目,使用PyQt5库打造,提供完整源码,方便用户快速上手和扩展功能。项目通过巧妙的环境设置,避免了复杂的依赖安装,确保程序在不同系统中都能流畅运行。无论是作为学习Python...

gitblog_06779的博客 1013

Nexys4DDR+OV7670实现图像灰度显示系统嵌入式

通过对硬件平台的准备、Vivado工程配置、OV7670驱动程序的编写、图像灰度处理算法的设计以及系统集成与测试,我们成功实现了一个基于嵌入式系统的图像处理应用。当系统运行时,OV7670摄像头模块将采集到的图像传输到FPGA芯片中,然后通过图像灰度处理算法将彩色图像转换为黑白图像,并在显示设备上进行显示。OV7670摄像头模块的驱动程序是实现图像采集的核心。以上代码中,我们使用了Xilinx提供的XGpio和Xil_In32函数来进行OV7670摄像头数据的读取和GPIO的初始化。OV7670驱动程序。

WangWEel的博客 338

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python:基于pyside6的桌宠源码分享

一个基于PySide6的桌面宠物程序实现方案。支持两种显示模式:图片序列和GIF动画,可通过鼠标事件控制宠物移动、切换动画(右键)和显示系统信息(双击)。系统信息窗口会展示CPU、内存、GPU等硬件数据。

我是你大爷 1316

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何从零开始制作智能桌宠?

作者 | 李秋键 责编 | maozz 出品 | 优快云(ID:优快云news) 引言:是否还记得曾经风靡全国的QQ宠物呢,那个又调皮又可爱的QQ企鹅,偶尔还会生病撒娇,需要培养的虚拟宠物,你是否还记得它的样子呢。它是腾讯公司推出的第一款QQ宠物系列游戏,也是运营了很久的系列宠物游戏。该游戏无级别限制,贯穿宠物成长全过程,包括打工、学习、旅游、游戏、结婚、生蛋等。但是该游戏已于2...

优快云资讯 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python写桌宠_【Unity/开源】八重樱桌宠(三):Python自动更新、修复描边

接下来就到了喜闻乐见的PY环节:defget_html(url):try:headers = { "Host": "github.com","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36...

weixin_29080033的博客 972

python制作智能桌宠(可自行添加很多功能)完整源码

python制作智能桌宠(可自行添加很多功能)完整源码 【下载地址】python制作智能桌宠可自行添加很多功能完整源码 这是一个基于Python开发的智能桌宠项目,使用PyQt5库打造,提供完整源码,方便用户快速上手和扩展功能。项目通过巧妙的环境设置,避免了复杂的依赖安装,确保程序在不同系统中都能流畅运行。无论是作为学习...

gitblog_06799的博客 490

用tkinter做一个桌宠

然后,我们定义我们的桌宠应该什么样子。为了让桌宠移动,我们可以使用一个带有透明背景的GIF动画。我们可以使用Image对象和ImageTk.PhotoImage()函数将GIF文件加载到程序中。

weixin_62650212的博客 1452
上一篇: Python编程精进:如何处理函数调用超时问题!
下一篇: Python爬取天气数据并进行可视化分析的完整指南
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值