211 lines
5.6 KiB
Markdown
211 lines
5.6 KiB
Markdown
# MetaCore - PyQt5版本
|
||
|
||
这是基于PyQt5重写的MetaCore项目管理平台,完全复制了原始Web版本的界面和功能。
|
||
|
||
## 功能特性
|
||
|
||
### 🎯 主要功能
|
||
- ✅ **项目管理**:创建、导入、删除、重命名项目
|
||
- ✅ **项目卡片**:三段式布局(标题+菜单、图片+类型标签、时间)
|
||
- ✅ **收藏功能**:项目收藏/取消收藏
|
||
- ✅ **搜索过滤**:按名称搜索、按类型过滤
|
||
- ✅ **视图模式**:网格视图和列表视图
|
||
- ✅ **右键菜单**:完整的项目操作菜单
|
||
|
||
### 🎨 界面特性
|
||
- ✅ **深色主题**:现代化的深色界面设计
|
||
- ✅ **响应式布局**:自适应窗口大小
|
||
- ✅ **侧边栏导航**:可展开/收起的导航菜单
|
||
- ✅ **模态对话框**:创建项目和导入项目对话框
|
||
- ✅ **拖拽支持**:文件拖拽导入功能
|
||
|
||
## 安装和运行
|
||
|
||
### 1. 环境要求
|
||
- Python 3.7+
|
||
- PyQt5 5.15.0+
|
||
|
||
### 2. 安装依赖
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3. 运行应用
|
||
```bash
|
||
python main.py
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
MetaCore/
|
||
├── main.py # 主程序入口
|
||
├── requirements.txt # 依赖包列表
|
||
├── README_PyQt5.md # 说明文档
|
||
├── data/ # 数据模块
|
||
│ ├── __init__.py
|
||
│ ├── project_manager.py # 项目数据管理器
|
||
│ └── projects.json # 项目数据文件(自动生成)
|
||
└── ui/ # 界面模块
|
||
├── __init__.py
|
||
├── main_window.py # 主窗口
|
||
├── sidebar.py # 侧边栏组件
|
||
├── project_area.py # 项目显示区域
|
||
├── project_card.py # 项目卡片组件
|
||
├── create_project_dialog.py # 创建项目对话框
|
||
├── import_project_dialog.py # 导入项目对话框
|
||
└── styles.py # 样式表定义
|
||
```
|
||
|
||
## 主要组件说明
|
||
|
||
### 1. 主窗口 (MainWindow)
|
||
- 整体布局管理
|
||
- 菜单栏和状态栏
|
||
- 组件间信号连接
|
||
- 窗口事件处理
|
||
|
||
### 2. 侧边栏 (Sidebar)
|
||
- Logo区域
|
||
- 快速操作按钮
|
||
- 可展开的导航菜单
|
||
- 用户信息显示
|
||
|
||
### 3. 项目区域 (ProjectArea)
|
||
- 工具栏和搜索区域
|
||
- 网格/列表视图切换
|
||
- 项目卡片容器
|
||
- 空状态显示
|
||
|
||
### 4. 项目卡片 (ProjectCard)
|
||
- 三段式布局设计
|
||
- 悬停效果
|
||
- 右键菜单
|
||
- 收藏状态显示
|
||
|
||
### 5. 创建项目对话框 (CreateProjectDialog)
|
||
- 2:1布局比例
|
||
- 模板选择网格
|
||
- 项目信息表单
|
||
- 文件夹选择功能
|
||
|
||
### 6. 导入项目对话框 (ImportProjectDialog)
|
||
- 文件拖拽上传
|
||
- 导入选项配置
|
||
- 文件列表显示
|
||
- 进度反馈
|
||
|
||
## 数据管理
|
||
|
||
### 项目数据结构
|
||
```python
|
||
{
|
||
"id": 1,
|
||
"title": "项目名称",
|
||
"date": "2024-06-08 15:56:35",
|
||
"type": "industrial",
|
||
"image": "🏭",
|
||
"favorite": true,
|
||
"path": "/path/to/project"
|
||
}
|
||
```
|
||
|
||
### 支持的项目类型
|
||
- `industrial` - 工业项目 🏭
|
||
- `smart` - 智能项目 💧
|
||
- `vr` - VR项目 🥽
|
||
- `game` - 游戏项目 🎮
|
||
- `design` - 设计项目 🎨
|
||
- `empty` - 空白项目 📁
|
||
|
||
## 样式系统
|
||
|
||
### 主题色彩
|
||
- **主色调**:深灰色 (#1a1a1a, #2a2a2a)
|
||
- **边框色**:中灰色 (#3a3a3a, #4a4a4a)
|
||
- **强调色**:紫色 (#8b5cf6, #7c3aed)
|
||
- **文字色**:白色/灰色 (#ffffff, #cccccc, #888888)
|
||
|
||
### 组件样式
|
||
- 所有组件都有对应的ObjectName用于样式选择器
|
||
- 支持悬停状态和选中状态
|
||
- 统一的圆角和间距设计
|
||
- 平滑的过渡动画效果
|
||
|
||
## 信号和槽机制
|
||
|
||
### 主要信号
|
||
- `projects_changed` - 项目列表变化
|
||
- `project_added` - 项目添加
|
||
- `project_removed` - 项目删除
|
||
- `project_updated` - 项目更新
|
||
- `filter_changed` - 过滤条件变化
|
||
- `search_changed` - 搜索内容变化
|
||
|
||
### 事件处理
|
||
- 鼠标点击事件
|
||
- 键盘快捷键
|
||
- 拖拽事件
|
||
- 窗口事件
|
||
|
||
## 扩展功能
|
||
|
||
### 可以添加的功能
|
||
1. **项目模板系统**:真实的项目模板创建和应用
|
||
2. **文件管理**:项目内文件的管理和预览
|
||
3. **版本控制**:Git集成和版本管理
|
||
4. **协作功能**:多用户协作和权限管理
|
||
5. **插件系统**:支持第三方插件扩展
|
||
6. **云同步**:项目数据云端同步
|
||
7. **导出功能**:项目打包和分享
|
||
|
||
### 性能优化
|
||
1. **虚拟滚动**:大量项目时的性能优化
|
||
2. **缓存机制**:图片和数据缓存
|
||
3. **异步加载**:大文件异步处理
|
||
4. **内存管理**:及时释放不用的资源
|
||
|
||
## 开发说明
|
||
|
||
### 添加新组件
|
||
1. 在`ui/`目录下创建新的组件文件
|
||
2. 继承适当的PyQt5基类
|
||
3. 实现`init_ui()`方法
|
||
4. 添加必要的信号定义
|
||
5. 在样式表中添加对应样式
|
||
|
||
### 修改样式
|
||
1. 在`ui/styles.py`中修改样式定义
|
||
2. 使用ObjectName作为选择器
|
||
3. 支持状态选择器(:hover, :checked等)
|
||
4. 遵循现有的颜色和间距规范
|
||
|
||
### 数据持久化
|
||
- 项目数据自动保存到`data/projects.json`
|
||
- 应用关闭时自动保存
|
||
- 启动时自动加载历史数据
|
||
- 支持数据备份和恢复
|
||
|
||
## 与Web版本对比
|
||
|
||
### 相同功能
|
||
- ✅ 完全相同的界面布局
|
||
- ✅ 相同的项目管理功能
|
||
- ✅ 相同的视觉设计风格
|
||
- ✅ 相同的用户交互逻辑
|
||
|
||
### PyQt5版本优势
|
||
- ✅ 原生桌面应用体验
|
||
- ✅ 更好的性能表现
|
||
- ✅ 系统集成度更高
|
||
- ✅ 离线使用支持
|
||
- ✅ 文件系统直接访问
|
||
|
||
### 技术差异
|
||
- **Web版本**:HTML + CSS + JavaScript
|
||
- **PyQt5版本**:Python + PyQt5 + 自定义样式表
|
||
- **数据存储**:JSON文件 vs 浏览器存储
|
||
- **文件操作**:系统API vs Web API限制
|
||
|
||
这个PyQt5版本完全复制了Web版本的功能和外观,同时提供了更好的桌面应用体验。
|