iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >基于Python制作一个桌面宠物
  • 400
分享到

基于Python制作一个桌面宠物

Python实现桌面宠物Python桌面宠物 2022-12-08 20:12:26 400人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录获取素材图片窗体设置随机展示宠物图片添加动作右键菜单今天,我们来分享一个宠物桌面小程序,全程都是通过 PyQt 来制作的,对于 python GUI 感兴趣的朋友,千万不要错过哦

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

我们先来看看最终的效果,对于一个小小的娱乐项目来说,还是不错啦!

本文灵感和部分代码来源于一篇知乎文章,感兴趣的朋友可以访问如下链接[1]

好了,废话不多说,我直接上干货,本项目使用 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桌面宠物内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于Python制作一个桌面宠物

本文链接: https://www.lsjlt.com/news/174411.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Python制作一个桌面宠物
    目录获取素材图片窗体设置随机展示宠物图片添加动作右键菜单今天,我们来分享一个宠物桌面小程序,全程都是通过 PyQT 来制作的,对于 Python GUI 感兴趣的朋友,千万不要错过哦...
    99+
    2022-12-08
    Python实现桌面宠物 Python桌面宠物
  • 桌面宠物 ① 通过python制作属于自己的桌面宠物
    一、桌面宠物素材 1.1 需要准备什么素材         桌面宠物的各种动画效果,可以看作是由一个个GIF动图拼接而成,我们需要准备多组GIF动图来实现桌面宠物的动作切换。         最好选取是白底的GIF动图。 1.2 介绍几...
    99+
    2023-09-12
    python 桌面宠物
  • 用Python制作一个可以聊天的皮卡丘版桌面宠物
    目录导语开发工具原理简介步骤实现导语 前段时间有小伙伴留言说想让我带大家写写桌面小挂件,今天就满足一下留过类似言的小伙伴的请求呗~不过感觉写桌面的挂历啥的没意思,就简单带大家做一只桌...
    99+
    2024-04-02
  • 基于Java+SpringBoot制作一个社区宠物登记小程序
    制作一个社区宠物登记小程序,帮助社区居民登记和管理他们的宠物信息,以便更好地跟踪和维护社区中的宠物状况,通过社区宠物信息登记系统,社区居民可以更好地管理自己的宠物信息,并与其他宠物所有者共享资源和信息。这将有助于提高社区宠物的福利和安全...
    99+
    2023-08-16
    java spring boot 宠物 社区宠物 宠物登记 电子宠物 原力计划
  • 怎么用Python制作一个可以聊天的皮卡丘版桌面宠物
    这篇文章主要介绍了怎么用Python制作一个可以聊天的皮卡丘版桌面宠物,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。开发工具Python版本:3.6.4相关模块:PyQt5模...
    99+
    2023-06-29
  • 基于PyQT5制作一个桌面摸鱼工具
    目录前言按键功能控制主要功能核心代码前言 现在我能一整天都严肃地盯着屏幕,看起来就像在很认真地工作, 利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度 用PYQT5 Mock一个摸鱼...
    99+
    2024-04-02
  • 基于Python制作一键桌面整理工具
    目录前言效果展示开发思路完整代码前言 我承认我不是一个爱整理桌面的人,因为我觉得乱糟糟的桌面,反而容易找到文件。 哈哈,可是最近桌面实在是太乱了,自己都看不下去了,几乎占满了整个屏幕...
    99+
    2024-04-02
  • 基于Python制作一个动物识别小程序
    目录 引言研究背景目的与意义 动物识别技术概述基本原理图像处理与特征提取机器学习与深度学习方法 数据集与数据预处理数据收集与构建数据预处理步骤数据增强技术 特征提取与选择基...
    99+
    2023-10-25
    python 开发语言 图像处理
  • Python调用ChatGPT制作基于Tkinter的桌面时钟
    目录描述代码效果说明描述 给ChatGPT的描述内容: python在桌面上显示动态的文字,不要显示窗口边框。窗口背景和标签背景都是透明的,但标签内的文字是有颜色。使用tkinter...
    99+
    2023-03-23
    Python ChatGPT制作桌面时钟 Python制作桌面时钟 Python时钟
  • 基于QT5实现一个时钟桌面
    目录介绍实现代码clock.pro analogclock.h analogclock.cppmain.cpp编译打包编译打包介绍 这是一个简单的时钟运行界面,项...
    99+
    2024-04-02
  • 基于Python制作一个文本翻译器
    translate非标准库是python中可以实现对多种语言进行互相翻译的库,使用时只需要设置目标语言(比如:中文、英文)后,会自动将原始文本翻译成我们需要的目标语言。 使用pip...
    99+
    2024-04-02
  • 基于Python制作一个相册播放器
    大家好,我是小F。 对于相册播放器,大家应该都不陌生(用于浏览多张图片的一个应用)。 当然还有视频、音乐播放器,同样是用来播放多个视频、音乐文件的。 在Win10系统下,用【照片】这...
    99+
    2024-04-02
  • 基于Python制作一个多进制转换工具
    目录前言主要步骤完整代码前言 学习资料下载链接 提取码:9d4g  进制转换计算工具含源文件 主要步骤 导入模块 import tkinter from tki...
    99+
    2024-04-02
  • Python怎么调用ChatGPT制作基于Tkinter的桌面时钟
    本文小编为大家详细介绍“Python怎么调用ChatGPT制作基于Tkinter的桌面时钟”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么调用ChatGPT制作基于Tkinter的桌面时钟”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-05
  • 基于Python制作一个汇率换算程序
    目录1.汇率换算程序案例描述案例分析代码2.新增功能案例分析代码字符串索引3.增加功能案例描述案例分析代码1.汇率换算程序 案例描述 设计一个汇率换算器程序,其功能是将外币换算成人民...
    99+
    2024-04-02
  • 基于Python绘制一个摸鱼倒计时界面
    目录前言实现过程前言 前段时间在微博看到一段摸鱼人的倒计时模板,感觉还挺有趣的。 于是我用了一小时的时间写了个页面出来 摸鱼办地址 (当然是摸鱼的时间啦)。 模板是这样的: 摸鱼办...
    99+
    2024-04-02
  • 基于Python制作一个文件解压缩工具
    经常由于各种压缩格式的不一样用到文件的解压缩时就需要下载不同的解压缩工具去处理不同的文件,以至于桌面上的压缩工具就有三四种,于是使用python做了一个包含各种常见格式的文件解压缩的...
    99+
    2024-04-02
  • 基于Python制作一个文件去重小工具
    目录前言实现步骤补充前言 常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。 主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件...
    99+
    2024-04-02
  • 基于JavaScript制作一个骰子游戏
    目录知识点HTML 部分CSS 部分JavaScript 部分总结游戏可以通过这个链接进入  完整源码我已经放在GitHub上了 这节实验我们将使用 HTML、CSS 和 ...
    99+
    2024-04-02
  • 基于JavaSwing制作一个Pong小游戏
    之前呢我们用Python的Pygame做过这个Pong游戏 这一次,我们用Java的Swing来实现类似的效果 首先我们列出本次的项目结构 这个程序分为四个部分,一个程序入口,一...
    99+
    2023-01-05
    Java Swing制作Pong游戏 Java Pong游戏 Java Swing 游戏
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作