1. 前言:当代码遇上二次元
各位程序员小伙伴们好呀!今天我们要用Python和PyQt5打造一个超可爱的桌面宠物,今日模特小樱!想象一下,你深夜写代码写到头秃的时候,桌面上有个萌萌的小樱陪着你,是不是瞬间动力满满?
只做了建议开发,更多功能自行挖掘。(主要原因:没找到太多图片素材。)
2. 项目概述
2.1 功能亮点
- 🎭 多种表情动作随机切换
- 🏃♀️ 上下移动的活泼效果
- 🛏️ 睡觉模式(摸鱼必备)
- 🖱️ 右键菜单控制
- 🎨 透明背景,不遮挡工作区
2.2 技术栈
- Python 3.x
- PyQt5
- 多线程处理
- 定时器控制动画
3. 代码详解
3.1 初始化设置
class DesktopPet(QWidget):
tool_name = '桌面宠物'
def __init__(self, parent=None, **kwargs):
super(DesktopPet, self).__init__(parent)
# 动作配置 - 这里可以替换成小樱的各种表情
self.action_distribution = [['sakura_smile', 'sakura_angry','sakura_shy'],
['sakura_sleep', 'sakura_heal']]
# 窗体属性设置
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.resize(150, 150) # 小樱的完美尺寸
DiffCopyInsert
小贴士:这里的sakura_
前缀图片需要你准备一套小樱的表情包哦,建议包含:
- 微笑(smile)
- 生气(angry)
- 害羞(shy)
- 睡觉(sleep)
- 医疗忍术(heal)
- 诸如此类吧,素材很难找
3.2 动画引擎核心
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)
def runFrame(self):
# 播放动画帧
if self.action_pointer == self.action_max_len:
self.is_running_action = False # 小樱表演完啦
else:
self.setImage(self.action_images[self.action_pointer])
self.action_pointer += 1
开发趣事:这就像让小樱表演"表情包连续剧",每次随机抽一集播放!
3.3 移动控制
def selfMoveAction(self):
if self.flag_up: # 向上移动
if self.pos().y() > -70: # 别让小樱飞出屏幕
self.move(self.position.x(), self.position.y() - 5)
else:
self.flag_up = False # 该往下啦
else: # 向下移动
if self.pos().y() < 700: # 别让小樱掉到屏幕下面
self.move(self.position.x(), self.position.y() + 5)
else:
self.flag_up = True # 该往上啦
效果比喻:就像小樱在练习查克拉控制,在桌面上上下跳跃!
3.4 右键菜单控制
def rightMenu(self):
menu = QMenu(self)
actions = [
("移动", "让小樱开始训练", self.moveUpDown),
("停止", "让小樱休息一下", self.moveStop),
("睡觉", "小樱也需要美容觉", self.moveSleep),
("退出", "解除影分身之术", self.quit)
]
# 添加菜单项...
火影梗:最后一个选项我们用了"解除影分身之术"
4. 如何自定义你的小樱
4.1 准备素材
- 收集小樱的各种表情图片【大家可以去感兴趣的话可以去shimeji那里找找看。】
- 图片建议尺寸:150x150像素
- 背景透明PNG格式
- 命名规范:
sakura_动作名称.png(我的命名显然不规范)
4.2 修改配置
# 修改这里添加更多动作组
self.action_distribution = [
['sakura_smile', 'sakura_wink', 'sakura_laugh'],
['sakura_fight', 'sakura_medical'],
['sakura_sleep', 'sakura_dream']
]
4.3 进阶定制
- 添加音效(小樱的语音包)
- 增加拖拽功能
- 添加特殊日期彩蛋(比如小樱生日)
- GitHub上有更完整的功能和惊艳的效果,大家可以去看看https://github.com/Zao-chen/ZcChat
5. 结语:让编程更有温度
通过这个项目,我们不仅学会了PyQt5的各种用法,更重要的是为枯燥的编程生活增添了一丝温暖。想象一下当你debug到深夜,桌面上有个小樱对你说:"萨斯给,加油啊!"是不是瞬间被治愈了?
最后的小任务:给你的小樱添加一个"百豪之术"特效模式,当按下某个快捷键时,小樱的额头会出现阴封印图案!
***本项目仅供学习交流,春野樱形象版权归《火影忍者》原作者所有。