Skip to content

Repository files navigation

🐾 桌面宠物 DesktopPet

一个可爱的桌面宠物程序,基于 PyQt5 开发,支持多角色切换、自定义快捷方式、开机自启等功能。

✨ 功能特性

  • 🎭 多角色支持 - 内置多个可爱的宠物角色,随时切换
  • 🖱️ 拖拽移动 - 左键拖动宠物到任意位置
  • 💫 流畅动画 - 帧动画效果,生动有趣
  • 📌 窗口置顶 - 始终显示在桌面最前方
  • 🎯 快捷启动 - 右键菜单自定义快捷方式,一键打开常用程序
  • 🔄 角色切换 - 右键菜单快速切换不同角色
  • 👁️ 隐藏/显示 - 双击或右键菜单隐藏,托盘双击显示
  • 💾 记忆位置 - 自动保存宠物位置和设置
  • 🚀 开机自启 - 支持设置为开机自动启动
  • ⚙️ 配置文件 - JSON 配置文件,轻松自定义

📦 安装

环境要求

  • Python 3.6+
  • Windows / macOS / Linux

安装依赖

pip install -r requirements.txt

依赖包:

  • PyQt5 - GUI 框架

🚀 快速开始

🎯 首次使用(三步完成)

步骤 1:创建桌面快捷方式

双击 create_shortcut.vbs创建桌面快捷方式.bat,会在桌面创建快捷方式。

步骤 2:启动程序

双击桌面上的 DesktopPet.lnk 图标即可启动!

步骤 3:开始使用

看到桌面上的小宠物了吗?右键点击它,体验各种功能吧!


📖 其他启动方式

方式一:桌面快捷方式(最推荐)⭐

双击桌面上的 DesktopPet.lnk - 一键启动,最方便!

方式二:无窗口运行

双击 launcher.pyw 文件,程序会在后台运行,不显示控制台窗口。

或双击 启动桌宠.bat 批处理脚本。

方式三:命令行运行

python pet_improved.py

🔄 设置开机自启动

双击 设置开机自启.bat 或运行:

python setup_autostart.py

按提示选择:

  1. 启用开机自启动
  2. 禁用开机自启动
  3. 检查当前状态

命令行参数:

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 帧 防御专家

💡 切换角色:右键宠物 → 切换角色 → 选择你喜欢的角色!

🎨 添加自定义角色

准备工作

  1. 准备一系列连续的角色动画图片(PNG 格式推荐)
  2. 图片命名格式:角色名_0.png, 角色名_1.png, 角色名_2.png ...
  3. 将所有图片放在 images/角色名/ 文件夹中

从 GIF 提取帧(可选)

如果你有 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.jsonpets 数组中添加:

{
  "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:

  1. 确认已正确运行 setup_autostart.py 并选择启用
  2. 检查注册表:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  3. 确认 Python 和脚本路径正确
  4. 以管理员身份运行可能有帮助
Q: 如何添加自己的角色?

A:

  1. 准备连续帧的 PNG 图片序列
  2. 放在 images/角色名/ 文件夹
  3. 图片命名为 角色名_0.png, 角色名_1.png ...
  4. config.jsonpets 中添加角色配置
  5. 运行 verify_images.py 验证
  6. 重启程序即可在右键菜单中看到新角色
Q: 程序占用资源高吗?

A: 非常低。程序使用定时器刷新动画,正常情况下:

  • CPU 占用 < 1%
  • 内存占用约 20-30MB
Q: 为什么宠物位置会自动保存?

A: 程序会在退出时自动保存当前位置到 config.json,下次启动时恢复到上次位置。

🛠️ 技术架构

核心组件

┌─────────────────────────────────────┐
│           App (主应用)               │
│  - 窗口管理                          │
│  - 事件处理                          │
│  - 组件协调                          │
└────────┬────────────────────────────┘
         │
    ┌────┴─────┬──────────┬──────────┐
    │          │          │          │
┌───▼───┐ ┌───▼───┐ ┌────▼────┐ ┌───▼────┐
│Config │ │  Pet  │ │PetLabel │ │ Tray   │
│Manager│ │       │ │         │ │        │
└───────┘ └───────┘ └─────────┘ └────────┘

类说明

  • ConfigManager - 配置管理类,负责加载和保存配置文件
  • Pet - 宠物数据类,管理角色信息和动画帧
  • PetLabel - 宠物标签类,处理右键菜单和用户交互
  • App - 主应用类,协调各个组件和事件处理

工作流程

  1. 启动时加载 config.json 配置文件
  2. 创建 Pet 对象,加载默认宠物角色
  3. 创建主窗口和宠物标签,设置无边框透明窗口
  4. 创建系统托盘图标和菜单
  5. 启动动画定时器(根据 animation_speed 配置)
  6. 显示窗口到配置的位置
  7. 退出时保存当前位置和设置

扩展开发

添加自定义菜单项:

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('执行自定义功能')
    # 实现你的功能逻辑

📝 更新日志

[v2.2.0] - 2026-08-19

  • 🎯 新增桌面快捷方式创建工具
    • 添加 create_shortcut.vbs VBS脚本
    • 添加 创建桌面快捷方式.bat 批处理脚本
    • 一键创建桌面快捷方式,启动更方便
  • 📝 更新 README,优化快速开始指南

[v2.1.0] - 2026-08-19

  • 🎭 角色更名:默认角色从"初音"更名为"妹子"
  • ✅ 验证所有角色图片完整性

[v2.0.0] - 2026-08-19

  • ✨ 全新重构代码,采用面向对象设计
  • ✨ 新增配置文件系统(JSON)
  • ✨ 支持多角色切换
  • ✨ 自定义快捷方式功能
  • ✨ 开机自启动支持
  • ✨ 自动保存宠物位置和设置
  • ✨ 改进的系统托盘功能
  • ✨ 添加图片验证工具
  • ✨ 完善的文档和批处理脚本
  • 🐛 修复拖动偏移问题
  • 🐛 修复硬编码路径问题

[v1.0.0] - 初始版本

  • ✅ 基础桌面宠物功能
  • ✅ 帧动画显示
  • ✅ 鼠标拖拽移动
  • ✅ 系统托盘支持

详细更新日志请查看 CHANGELOG.md

📄 开源协议

本项目采用 MIT License 开源协议。

这意味着你可以自由地:

  • ✅ 商业使用
  • ✅ 修改代码
  • ✅ 分发
  • ✅ 私用

唯一的要求是保留版权声明。

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

贡献方式:

  1. Fork 本仓库
  2. 创建你的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交你的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

建议的改进方向:

  • 🎨 更多内置角色
  • 🌐 多语言支持
  • 🎵 音效功能
  • 🤖 AI 互动功能
  • 📊 系统监控显示(CPU、内存)
  • 🎮 小游戏互动
  • ☁️ 在线角色商店

💬 反馈与支持

  • 📫 提交 Issue 反馈问题或建议
  • ⭐ 如果觉得有用,请给个 Star!
  • 🔄 Fork 并改造成你自己的桌面宠物

享受你的桌面宠物吧! 🎉

Made with ❤️ by Desktop Pet Community

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages