一个功能丰富、界面美观的思维导图编辑软件,支持树形思维导图的创建、编辑和管理。
作者:谢秋实 朱拓源
更多系统框图、关键模块流程图、设计报告、软件运行界面在报告中有详细展示
MindMap 是一个基于 Python 和 PyQt5 开发的思维导图编辑软件。它提供了完整的思维导图编辑功能,支持多层级主题、丰富的样式定制、手写批注、待办事项管理等特性。软件提供浅色、深色、黑白三种主题,支持中英文双语界面。
- 🎨 美观的界面设计:支持多种主题切换
- 🌐 多语言支持:支持中文和英文界面
- 🎯 丰富的功能:节点编辑、连接线管理、手写批注、待办事项等
- 💾 完善的文件管理:支持保存、加载、导出多种格式
- 🔄 撤销/重做:完整的操作历史管理
- 📝 手写批注:支持在思维导图上进行手写标注
- ✅ 多层级节点:支持中心主题、分支主题、子主题、自由主题四个层级
- ✅ 节点编辑:双击节点即可编辑文本内容
- ✅ 节点样式:自定义节点背景颜色和文本颜色
- ✅ 节点缩放:支持节点大小调整(拖拽右下角手柄)
- ✅ 节点移动:支持单个节点移动或移动子树模式
- ✅ 自动连接:子节点自动与父节点连接
- ✅ 手动连线:支持在不同节点之间创建连接线
- ✅ 连线管理:批量创建和删除连接线
- ✅ 智能调整:节点移动时连接线自动调整位置
- ✅ 备注功能:为节点添加备注信息
- ✅ 链接功能:为节点添加超链接,点击即可打开
- ✅ 批注功能:为节点添加批注内容
- ✅ 节点信息:集成显示节点的批注和链接信息
- ✅ 图标插入:支持在节点中插入图片图标
- ✅ 待办事项:为节点添加待办事项列表
- ✅ 复制/粘贴:支持节点及其子树的复制和粘贴
- ✅ 剪切/删除:支持节点的剪切和删除操作
- ✅ 撤销/重做:完整的操作历史,支持撤销和重做
- ✅ 移动子树:移动节点时可选择是否同时移动子树
- ✅ 新建文件:创建新的思维导图文件
- ✅ 打开文件:打开已保存的思维导图(.mm格式)
- ✅ 保存文件:保存思维导图为XML格式
- ✅ 另存为:将思维导图保存到指定位置
- ✅ 自动保存:每10秒自动保存一次(可配置)
- ✅ 最近文件:记录最近打开的文件列表
- ✅ 导出PNG:将思维导图导出为PNG图片
- ✅ 导出PDF:将思维导图导出为PDF文档
- ✅ 打印功能:支持直接打印思维导图
- ✅ Markdown导入:支持从Markdown文件导入思维导图
- ✅ 主题切换:支持浅色、深色、黑白三种主题
- ✅ 语言切换:支持中文和英文界面切换
- ✅ 视图缩放:支持思维导图的放大和缩小
- ✅ 状态显示:显示当前节点数量和操作提示
- ✅ 手写模式:支持在思维导图上进行手写标注
- ✅ 画笔工具:可选择画笔或橡皮擦模式
- ✅ 颜色选择:手写颜色根据主题自动调整
- ✅ 批注管理:支持批注的显示、隐藏和删除
- Python 3.6+
- PyQt5 5.15+
QGraphicsScene- 场景管理QGraphicsView- 视图显示QGraphicsTextItem- 文本节点QUndoStack- 撤销/重做栈QColorDialog- 颜色选择对话框QFileDialog- 文件对话框
- XML - 思维导图文件格式(.mm)
- PNG - 图片导出格式
- PDF - 文档导出格式
- Markdown - 导入支持
- Python 3.6 或更高版本
- PyQt5 5.15 或更高版本
-
克隆或下载项目
git clone <repository-url> cd mindmap-master
-
安装依赖
pip install PyQt5
或者使用requirements.txt(如果存在):
pip install -r requirements.txt
在项目根目录下执行:
python main.py程序启动后,将显示主窗口界面。
- 添加子节点:选中节点后,按
Insert键或点击工具栏"子主题"按钮 - 添加同级节点:选中节点后,按
Ctrl+Insert键 - 编辑节点:双击节点即可编辑文本内容
- 单个移动:直接拖拽节点
- 移动子树:启用"移动子树"模式后,移动节点会同时移动其所有子节点
- 键盘移动:使用方向键
↑↓←→切换激活节点
- 复制:选中节点后,按
Ctrl+C或右键菜单选择"复制" - 粘贴:按
Ctrl+V或右键菜单选择"粘贴" - 剪切:按
Ctrl+X或右键菜单选择"剪切"
- 选中节点后,按
Delete键或右键菜单选择"删除" - 注意:中心主题节点无法删除
- 选中要修改的节点
- 右键菜单选择"设置颜色"
- 在颜色对话框中选择颜色
- 点击确定应用
- 选中要修改的节点
- 右键菜单选择"设置文本颜色"
- 在颜色对话框中选择颜色
- 点击确定应用
- 点击菜单栏"主题"菜单
- 选择"浅色"、"深色"或"黑白"主题
- 所有节点和连接线会自动应用新主题样式
- 点击菜单栏"插入" → "关系"或工具栏"连线管理"按钮
- 选择两个节点(先选源节点,再选目标节点)
- 系统会自动创建连接线
- 选中多个节点(至少两个)
- 点击"连线管理"按钮
- 系统会自动创建或删除节点之间的连接线
- 点击工具栏"手写"按钮
- 选择"画笔"或"橡皮擦"模式
- 在思维导图上进行绘制
- 再次点击"手写"按钮即可退出
- 选中节点
- 点击菜单栏"插入" → "待办事项"
- 在对话框中输入待办事项内容
- 点击"添加"按钮
- 在待办事项列表中,可以:
- 点击"完成"标记已完成
- 点击"删除"移除待办事项
| 功能 | 快捷键 |
|---|---|
| 新建文件 | Ctrl+N |
| 打开文件 | Ctrl+O |
| 保存文件 | Ctrl+S |
| 另存为 | Ctrl+Shift+S |
| 撤销 | Ctrl+Z |
| 重做 | Ctrl+Y |
| 复制 | Ctrl+C |
| 粘贴 | Ctrl+V |
| 剪切 | Ctrl+X |
| 删除 | Delete |
| 添加子节点 | Insert |
| 添加同级节点 | Ctrl+Insert |
| 切换激活节点 | ↑ ↓ ← → |
| 退出编辑 | Esc |
mindmap-master/
├── main.py # 程序入口文件
├── mainwindow.py # 主窗口实现
├── Graph.py # 场景管理类(节点和连接线管理)
├── Node.py # 节点类实现
├── Branch.py # 连接线类实现
├── Command.py # 命令模式实现(撤销/重做)
├── Component.py # 组件模块(备注、链接、待办事项等)
├── Annotation.py # 批注和手写功能
├── Config.py # 配置常量定义
├── README.md # 项目说明文档
├── test.ini # 配置文件
│
├── files/ # 示例文件目录
│ ├── *.mm # 思维导图文件
│ ├── *.png # 导出的图片
│ └── *.pdf # 导出的PDF
│
├── icons/ # 图标资源目录
│ └── *.svg # SVG图标文件
│
├── images/ # 图片资源目录
│ ├── window.ico # 窗口图标
│ └── *.png # 工具栏图标
│
└── test/ # 测试代码目录
└── *.py # 测试脚本
- main.py:应用程序入口,初始化主窗口和各功能窗口,建立信号连接
- mainwindow.py:主窗口类,包含菜单栏、工具栏、状态栏,管理文件操作和界面设置
- Graph.py:场景管理类,继承自QGraphicsScene,管理所有节点和连接线
- Node.py:节点类,继承自QGraphicsTextItem,实现节点的绘制、编辑、移动等功能
- Branch.py:连接线类,继承自QGraphicsLineItem,实现节点之间的连线
- Command.py:命令模式实现,支持撤销/重做功能
- Component.py:组件模块,包含备注窗口、链接窗口、待办事项等
- Annotation.py:批注和手写功能实现
- Config.py:全局配置常量,包括节点层级、命令ID、窗口尺寸等
- 使用中文注释,详细说明函数功能和参数
- 遵循PEP 8 Python代码规范
- 使用有意义的变量名和函数名
-
添加新的节点属性:
- 在
Node.py中添加属性 - 在
Graph.py的保存/加载方法中处理新属性
- 在
-
添加新的命令:
- 在
Command.py中创建新的命令类 - 继承
QUndoCommand并实现undo()和redo()方法
- 在
-
添加新的主题:
- 在
Node.py的paint()方法中添加主题样式 - 在
Branch.py的updateThemeStyle()方法中添加主题样式 - 在
mainwindow.py的菜单中添加主题选项
- 在
- 使用
print()输出调试信息 - 检查
test.ini配置文件 - 查看控制台输出的错误信息
- ✅ 支持三种主题:浅色、深色、黑白
- ✅ 支持中英文双语界面
- ✅ 支持手写批注功能
- ✅ 支持待办事项列表
- ✅ 支持节点信息窗口(集成批注和链接)
- ✅ 支持移动子树模式
- ✅ 支持连接线管理
- ✅ 支持Markdown导入
- ✅ 完善的撤销/重做功能
- ✅ 自动保存功能
本项目采用 MIT License 许可证。
本项目基于开源项目进行二次开发。如果您知道原项目的来源或需要修改许可证,请通过 Issue 联系我们。
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m ' some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 开发者 - 谢秋实 朱拓源 熊锦宸
- 感谢 PyQt5 社区提供的优秀框架
- 感谢原开源项目 Mindmap-by-Python-PyQt 的作者和贡献者(本项目基于此开源项目进行二次开发)
- 感谢所有贡献者的支持和建议
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件:1061839153@qq.com
⭐ 如果这个项目对你有帮助,请给个 Star!⭐
Made with ❤️ by MindMap Team