一个基于 PyQt5 开发的桌宠应用,具有交互式聊天功能和精美的界面设计。其聊天核心为麦麦Bot,一款专注于群组聊天的赛博网友(非常专注)QQ BOT。
- 🎭 可爱的桌宠形象(麦麦)
- 💬 支持实时对话交互
- 🖱️ 支持拖拽移动
- 📌 置顶显示
- 💭 气泡对话框
- 🔔 系统托盘支持
- ✨ 支持静态图片和 Live2D 动画渲染
- 🎨 界面缩放支持
- 📸 截图功能
- 🔄 模块化架构,易于扩展
- Python 3.8+
- Windows/Linux/MacOS
- PyQt5
- (可选)Live2D 库(用于 Live2D 动画)
- 首次运行会自动创建
config.toml配置文件 - 编辑
config.toml配置文件,设置 WebSocket 服务器地址 - 双击
start.bat启动程序
# 1. 创建虚拟环境(推荐)
python -m venv venv
# Windows 激活虚拟环境
venv\Scripts\activate
# Linux/Mac 激活虚拟环境
source venv/bin/activate
# 2. 安装依赖
pip install -r requirements.txt
# 3. 运行程序
python main.py程序首次运行时会自动从 config/templates/config.toml.template 创建 config.toml 配置文件。
# WebSocket 服务器地址(必填)
url = "ws://127.0.0.1:8000/ws"
# 桌宠昵称
Nickname = "麦麦"
# 是否隐藏终端窗口
hide_console = true
# 渲染模式:static(静态图片)或 live2d(Live2D 动画)
[render]
mode = "static"
# Live2D 配置(仅在 mode = "live2d" 时生效)
[live2d]
enabled = false
model_path = "./live2d/models/your-model.model3.json"
# 界面缩放(0.5 ~ 3.0)
[interface]
scale_factor = 1.0注意: config.toml 包含个人配置,已添加到 .gitignore,不会被提交到 Git。
- 左键拖拽:移动宠物位置
- 双击宠物:触发互动动作
- 右键点击:打开功能菜单
- 隐藏:隐藏宠物
- 截图:截图并发送给 mmc
- 聊聊天:打开对话输入框
- 退出:关闭程序
- 显示宠物:将桌宠显示在桌面上
- 显示/隐藏终端:默认隐藏终端以优化视觉效果,显示终端以方便调试
参考解决方案:https://blog.csdn.net/weixin_46599926/article/details/132576385
- 如果配置文件格式错误,程序会自动从模板重新创建
- 查看
logs/pet.log获取详细错误信息
MaiM-desktop-pet
├── config/ # 配置系统
│ ├── __init__.py # 配置模块入口
│ ├── loader.py # 配置加载器
│ ├── schema.py # 配置模式定义
│ └── templates/ # 配置模板
│ └── config.toml.template
├── data/ # 数据目录
├── docs/ # 文档目录
├── img/ # 图片资源
│ ├── maim.png
│ ├── maimai.png
│ └── small_maimai.png
├── logs/ # 日志目录
├── src/ # 源代码
│ ├── core/ # 核心业务层
│ │ ├── chat.py # 聊天核心
│ │ └── router.py # 路由器
│ ├── database/ # 数据库模块
│ │ ├── base.py # 数据库基类
│ │ ├── factory.py # 数据库工厂
│ │ ├── manager.py # 数据库管理器
│ │ └── sqlite.py # SQLite 实现
│ ├── frontend/ # 前端模块
│ │ ├── core/ # 前端核心
│ │ │ ├── managers/ # 管理器
│ │ │ │ ├── render_manager.py # 渲染管理器
│ │ │ │ ├── event_manager.py # 事件管理器
│ │ │ │ └── state_manager.py # 状态管理器
│ │ │ ├── render/ # 渲染器
│ │ │ │ ├── interfaces.py # 渲染器接口
│ │ │ │ ├── static_renderer.py # 静态渲染器
│ │ │ │ └── live2d_renderer.py # Live2D 渲染器
│ │ │ └── models/ # 模型
│ │ ├── presentation/ # 表现层
│ │ │ └── refactored_pet.py
│ │ ├── components/ # UI 组件
│ │ │ ├── bubble_input.py # 气泡输入
│ │ │ ├── bubble_menu.py # 气泡菜单
│ │ │ ├── bubble_speech.py # 气泡显示
│ │ │ └── ScreenshotSelector.py # 截图选择
│ │ ├── style_sheets/ # 样式表
│ │ ├── pet.py # 主窗口(旧版)
│ │ └── signals.py # 信号定义
│ ├── shared/ # 共享模块
│ │ └── models/ # 共享模型
│ └── util/ # 工具模块
│ ├── except_hook.py # 异常钩子
│ ├── image_util.py # 图片工具
│ └── logger.py # 日志工具
├── tests/ # 测试目录
├── main.py # 程序入口
├── requirements.txt # 依赖列表
├── start.bat # 启动脚本
├── README.md # 项目文档
└── .gitignore # Git 忽略文件
- GUI 框架:PyQt5
- 聊天核心:WebSocket(连接到 MaiBot 后端)
- 数据库:SQLite
- 配置管理:TOML + Pydantic
- 动画渲染:静态图片 / Live2D(可选)
项目采用分层架构设计:
- 数据层:负责数据持久化和配置管理
- 业务层:核心业务逻辑和渲染引擎
- 表现层:UI 组件和用户交互
- 核心层:管理器和协调器
详细的开发指南请查看 docs/ 目录:
docs/LIVE2D_REFACTORING_PLAN.md- Live2D 重构规划docs/REFACTORING_SUMMARY.md- 重构总结docs/REFACTORING_TODOLIST.md- 重构任务清单docs/MIGRATION_GUIDE.md- 迁移指南
- ✅ 确保系统已安装 Python 3.8 或更高版本
- ✅ 运行时需要保持网络连接(用于 WebSocket 通信)
- ✅ 建议使用虚拟环境运行项目
- ✅ 配置文件
config.toml包含个人设置,已添加到.gitignore ⚠️ 首次运行会自动创建配置文件,请根据需求修改⚠️ 使用 Live2D 功能需要额外安装 Live2D 库
查看 CHANGELOG.md 了解详细的版本更新历史。
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证。详见 LICENSE 文件。
- 项目地址:https://github.com/MaiM-with-u/MaiM-desktop-pet
- 问题反馈:https://github.com/MaiM-with-u/MaiM-desktop-pet/issues