一个可爱的桌面宠物程序,基于 PyQt5 开发,支持多角色切换、自定义快捷方式、开机自启等功能。
- 🎭 多角色支持 - 内置多个可爱的宠物角色,随时切换
- 🖱️ 拖拽移动 - 左键拖动宠物到任意位置
- 💫 流畅动画 - 帧动画效果,生动有趣
- 📌 窗口置顶 - 始终显示在桌面最前方
- 🎯 快捷启动 - 右键菜单自定义快捷方式,一键打开常用程序
- 🔄 角色切换 - 右键菜单快速切换不同角色
- 👁️ 隐藏/显示 - 双击或右键菜单隐藏,托盘双击显示
- 💾 记忆位置 - 自动保存宠物位置和设置
- 🚀 开机自启 - 支持设置为开机自动启动
- ⚙️ 配置文件 - JSON 配置文件,轻松自定义
- Python 3.6+
- Windows / macOS / Linux
pip install -r requirements.txt依赖包:
PyQt5- GUI 框架
双击 create_shortcut.vbs 或 创建桌面快捷方式.bat,会在桌面创建快捷方式。
双击桌面上的 DesktopPet.lnk 图标即可启动!
看到桌面上的小宠物了吗?右键点击它,体验各种功能吧!
双击桌面上的 DesktopPet.lnk - 一键启动,最方便!
双击 launcher.pyw 文件,程序会在后台运行,不显示控制台窗口。
或双击 启动桌宠.bat 批处理脚本。
python pet_improved.py双击 设置开机自启.bat 或运行:
python setup_autostart.py按提示选择:
- 启用开机自启动
- 禁用开机自启动
- 检查当前状态
命令行参数:
python setup_autostart.py add # 启用
python setup_autostart.py remove # 禁用
python setup_autostart.py check # 检查状态| 操作 | 方法 |
|---|---|
| 拖动宠物 | 鼠标左键按住拖动 |
| 隐藏宠物 | 双击宠物 或 右键→隐藏 |
| 显示宠物 | 双击托盘图标 或 右键托盘→显示 |
| 退出程序 | 右键宠物→退出 或 右键托盘→退出 |
右键点击宠物可以:
- 切换角色 - 选择不同的宠物(初音、僵尸、路障僵尸、坚果墙)
- 快捷方式 - 快速打开常用程序(可自定义)
- 隐藏 - 隐藏到系统托盘
- 退出 - 关闭程序
程序最小化到系统托盘:
- 双击图标 - 显示宠物
- 右键菜单 - 显示/退出选项
程序使用 config.json 配置文件进行自定义设置。
{
"default_pet": "chuyin",
"window_position": {"x": 1400, "y": 800},
"animation_speed": 250,
"shortcuts": [
{
"name": "浏览器",
"icon": "images/net.png",
"command": "start msedge.exe",
"enabled": true
}
],
"pets": [
{
"name": "chuyin",
"display_name": "初音",
"folder": "images/chuyin",
"frame_count": 61
}
]
}| 字段 | 说明 | 示例 |
|---|---|---|
default_pet |
默认显示的宠物 | "chuyin" |
window_position |
宠物初始位置(像素) | {"x": 1400, "y": 800} |
animation_speed |
动画帧间隔(毫秒) | 250 |
shortcuts |
快捷方式列表 | 数组,见下方 |
pets |
可用宠物列表 | 数组,见下方 |
在 shortcuts 数组中添加:
{
"name": "记事本",
"icon": "images/exit.png",
"command": "notepad.exe",
"enabled": true
}字段说明:
name- 菜单显示名称icon- 图标路径(可选)command- 要执行的命令enabled- 是否启用(true/false)
常用命令示例:
// 打开程序
{"name": "Chrome", "command": "start chrome.exe"}
{"name": "VSCode", "command": "code"}
{"name": "微信", "command": "start WeChat.exe"}
// 打开文件夹
{"name": "下载", "command": "explorer C:\\Users\\YourName\\Downloads"}
{"name": "文档", "command": "explorer C:\\Users\\YourName\\Documents"}
// 打开网址
{"name": "百度", "command": "start https://www.baidu.com"}
{"name": "GitHub", "command": "start https://github.com"}| 角色 | 说明 | 帧数 | 预览 |
|---|---|---|---|
| 妹子 (meizi) | 可爱的妹子形象 | 61 帧 | 默认角色 |
| 僵尸 (Zombie) | 植物大战僵尸中的普通僵尸 | 22 帧 | PVZ经典 |
| 路障僵尸 (ConeheadZombie) | 戴着路障的僵尸 | 21 帧 | 更强壮 |
| 坚果墙 (WallNut) | 植物大战僵尸中的坚果 | 16 帧 | 防御专家 |
💡 切换角色:右键宠物 → 切换角色 → 选择你喜欢的角色!
- 准备一系列连续的角色动画图片(PNG 格式推荐)
- 图片命名格式:
角色名_0.png,角色名_1.png,角色名_2.png... - 将所有图片放在
images/角色名/文件夹中
如果你有 GIF 动图,可以使用以下 Python 脚本提取帧:
from PIL import Image
import os
def extract_gif_frames(gif_path, output_folder, name_prefix):
"""从 GIF 提取所有帧并保存为 PNG"""
gif = Image.open(gif_path)
os.makedirs(output_folder, exist_ok=True)
frame_count = 0
try:
while True:
frame = gif.convert('RGBA')
frame.save(f'{output_folder}/{name_prefix}_{frame_count}.png')
frame_count += 1
gif.seek(gif.tell() + 1)
except EOFError:
pass
print(f'成功提取 {frame_count} 帧到 {output_folder}')
return frame_count
# 使用示例
frame_count = extract_gif_frames('mycat.gif', 'images/mycat', 'mycat')在 config.json 的 pets 数组中添加:
{
"name": "mycat",
"display_name": "我的猫咪",
"folder": "images/mycat",
"frame_count": 30
}字段说明:
name- 角色标识(英文,用于文件命名)display_name- 菜单显示名称(中文)folder- 图片文件夹路径frame_count- 动画帧数(图片数量)
运行验证工具检查图片完整性:
python verify_images.py或双击 验证图片.bat
重启程序后,在右键菜单→切换角色中即可看到新角色!
DesktopPet-main/
├── pet_improved.py # 改进版主程序
├── pet.py # 原始版本(保留参考)
├── launcher.pyw # 无窗口启动器
├── setup_autostart.py # 开机自启动设置工具
├── verify_images.py # 图片验证工具
├── create_desktop_shortcut.py # Python版桌面快捷方式创建工具
├── create_shortcut.vbs # VBS版桌面快捷方式创建脚本
├── config.json # 配置文件
├── requirements.txt # 依赖列表
├── README.md # 说明文档
├── CHANGELOG.md # 更新日志
├── LICENSE # MIT 开源协议
├── 启动桌宠.bat # 启动脚本
├── 设置开机自启.bat # 自启动设置脚本
├── 验证图片.bat # 图片验证脚本
├── 创建桌面快捷方式.bat # 创建桌面快捷方式脚本
└── images/ # 图片资源
├── meizi/ # 妹子角色(61帧)
├── Zombie/ # 僵尸角色(22帧)
├── ConeheadZombie/ # 路障僵尸角色(21帧)
├── WallNut/ # 坚果墙角色(16帧)
└── ico/ # 图标文件
Q: 如何创建桌面快捷方式?
A: 双击 create_shortcut.vbs 或 创建桌面快捷方式.bat,会自动在桌面创建 DesktopPet.lnk 快捷方式。
Q: 如何彻底关闭程序?
A: 右键宠物→退出,或右键系统托盘图标→退出。
Q: 双击后找不到宠物了?
A: 宠物被隐藏了,双击系统托盘图标或右键托盘图标→显示。
Q: 如何修改快捷方式?
A: 编辑 config.json 文件中的 shortcuts 数组,添加或修改快捷方式配置。
Q: 开机自启动不生效?
A:
- 确认已正确运行
setup_autostart.py并选择启用 - 检查注册表:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run - 确认 Python 和脚本路径正确
- 以管理员身份运行可能有帮助
Q: 如何添加自己的角色?
A:
- 准备连续帧的 PNG 图片序列
- 放在
images/角色名/文件夹 - 图片命名为
角色名_0.png,角色名_1.png... - 在
config.json的pets中添加角色配置 - 运行
verify_images.py验证 - 重启程序即可在右键菜单中看到新角色
Q: 程序占用资源高吗?
A: 非常低。程序使用定时器刷新动画,正常情况下:
- CPU 占用 < 1%
- 内存占用约 20-30MB
Q: 为什么宠物位置会自动保存?
A: 程序会在退出时自动保存当前位置到 config.json,下次启动时恢复到上次位置。
┌─────────────────────────────────────┐
│ App (主应用) │
│ - 窗口管理 │
│ - 事件处理 │
│ - 组件协调 │
└────────┬────────────────────────────┘
│
┌────┴─────┬──────────┬──────────┐
│ │ │ │
┌───▼───┐ ┌───▼───┐ ┌────▼────┐ ┌───▼────┐
│Config │ │ Pet │ │PetLabel │ │ Tray │
│Manager│ │ │ │ │ │ │
└───────┘ └───────┘ └─────────┘ └────────┘
- ConfigManager - 配置管理类,负责加载和保存配置文件
- Pet - 宠物数据类,管理角色信息和动画帧
- PetLabel - 宠物标签类,处理右键菜单和用户交互
- App - 主应用类,协调各个组件和事件处理
- 启动时加载
config.json配置文件 - 创建 Pet 对象,加载默认宠物角色
- 创建主窗口和宠物标签,设置无边框透明窗口
- 创建系统托盘图标和菜单
- 启动动画定时器(根据
animation_speed配置) - 显示窗口到配置的位置
- 退出时保存当前位置和设置
添加自定义菜单项:
def show_context_menu(self):
menu = QMenu(self)
# 添加自定义菜单项
custom_action = QAction('我的功能', self)
custom_action.triggered.connect(self.my_function)
menu.addAction(custom_action)
menu.exec_(QCursor.pos())
def my_function(self):
print('执行自定义功能')
# 实现你的功能逻辑- 🎯 新增桌面快捷方式创建工具
- 添加
create_shortcut.vbsVBS脚本 - 添加
创建桌面快捷方式.bat批处理脚本 - 一键创建桌面快捷方式,启动更方便
- 添加
- 📝 更新 README,优化快速开始指南
- 🎭 角色更名:默认角色从"初音"更名为"妹子"
- ✅ 验证所有角色图片完整性
- ✨ 全新重构代码,采用面向对象设计
- ✨ 新增配置文件系统(JSON)
- ✨ 支持多角色切换
- ✨ 自定义快捷方式功能
- ✨ 开机自启动支持
- ✨ 自动保存宠物位置和设置
- ✨ 改进的系统托盘功能
- ✨ 添加图片验证工具
- ✨ 完善的文档和批处理脚本
- 🐛 修复拖动偏移问题
- 🐛 修复硬编码路径问题
- ✅ 基础桌面宠物功能
- ✅ 帧动画显示
- ✅ 鼠标拖拽移动
- ✅ 系统托盘支持
详细更新日志请查看 CHANGELOG.md
本项目采用 MIT License 开源协议。
这意味着你可以自由地:
- ✅ 商业使用
- ✅ 修改代码
- ✅ 分发
- ✅ 私用
唯一的要求是保留版权声明。
欢迎提交 Issue 和 Pull Request!
贡献方式:
- Fork 本仓库
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交你的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
建议的改进方向:
- 🎨 更多内置角色
- 🌐 多语言支持
- 🎵 音效功能
- 🤖 AI 互动功能
- 📊 系统监控显示(CPU、内存)
- 🎮 小游戏互动
- ☁️ 在线角色商店
- 📫 提交 Issue 反馈问题或建议
- ⭐ 如果觉得有用,请给个 Star!
- 🔄 Fork 并改造成你自己的桌面宠物
享受你的桌面宠物吧! 🎉
Made with ❤️ by Desktop Pet Community
