# GoFile **Repository Path**: Aa520042/go-file ## Basic Information - **Project Name**: GoFile - **Description**: No description available - **Primary Language**: Unknown - **License**: Zlib - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-06 - **Last Updated**: 2025-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GoFile - 多功能文件查看编辑器 ## 项目简介 这是一个基于PyQt6开发的多功能桌面文件查看编辑器,支持多种文件格式的加载、查看和编辑,包括文本文件、代码文件、图像文件、PDF文档、Office文件(如.docx、.xlsx、.pptx)和电子书文件等。它提供了丰富的功能,包括自定义工具栏、主题系统、布局管理、系统集成(如托盘图标和文件关联)等现代化的用户体验。 ## 主要功能 - **多格式文件支持**:支持文本、代码、图像、PDF、Office文件(Word、Excel、PowerPoint)和电子书等多种格式的查看和编辑 - **智能文件处理**:基于文件类型自动选择合适的处理器,提供最佳的查看和编辑体验 - **自定义工具栏**:支持完全自定义的工具栏布局,用户可以根据需求添加、移除或重新排列工具栏操作项 - **主题系统**:内置多种界面主题,支持自定义主题的创建、导入和管理 - **布局管理**:支持保存和恢复窗口布局,允许用户自定义各个组件的位置和大小 - **系统集成**:支持文件关联和右键菜单集成,方便从文件资源管理器直接打开文件 - **现代化界面**:基于PyQt6构建的现代化用户界面,支持高DPI显示和响应式布局 ## 系统要求 - **操作系统**:Windows 10/11、macOS 10.14+、Linux(Ubuntu 18.04+) - **Python版本**:Python 3.8 或更高版本 - **核心依赖**:PyQt6 - **其他依赖**:详见 `requirements.txt` 文件 ### 主要依赖包 - PyQt6:现代化的GUI框架 - PyMuPDF:PDF文件处理 - Pillow:图像文件处理 - python-docx:Word文档处理 - openpyxl:Excel文件处理 - python-pptx:PowerPoint文件处理 - ebooklib:电子书文件处理 - beautifulsoup4:HTML/XML解析 - chardet:字符编码检测 - markdown:Markdown文件渲染 - pygments:代码语法高亮 ## 安装步骤 1. 克隆本项目到本地: ```bash git clone cd GoFile ``` 2. 创建虚拟环境(推荐): ```bash python -m venv .venv # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate ``` 3. 安装依赖: ```bash pip install -r requirements.txt ``` 4. 运行主程序: ```bash python main.py ``` ## 使用指南 ### 基本操作 1. **打开文件**:通过"文件"菜单选择"打开",或直接拖拽文件到应用窗口 2. **文件编辑**:根据文件类型自动加载相应的编辑器,支持文本编辑、图像查看、PDF阅读等 3. **保存文件**:使用 `Ctrl+S` 保存当前文件,`Ctrl+Shift+S` 另存为新文件 4. **查找替换**:使用 `Ctrl+F` 查找文本,`Ctrl+R` 进行替换操作 ### 界面定制 1. **工具栏设置**:通过"工具"菜单访问工具栏设置,自定义工具栏布局 2. **主题切换**:在"工具"菜单中选择"主题设置",切换或自定义界面主题 3. **布局管理**:保存当前窗口布局,下次启动时自动恢复 ### 高级功能 1. **系统集成**:通过"工具"菜单设置文件关联,实现双击文件直接打开 2. **批量处理**:支持同时打开多个文件,在标签页中切换 3. **插件扩展**:支持通过文件处理器扩展新的文件格式支持 ## 快捷键 - `Ctrl + O`:打开文件 - `Ctrl + S`:保存文件 - `Ctrl + N`:新建文件 - `Ctrl + Shift + S`:另存为 - `Ctrl + P`:显示打印对话框 - `Ctrl + F`:查找文本 - `Ctrl + R`:替换文本 - `Ctrl + Shift + T`:切换工具栏设置 - `Ctrl + Shift + L`:切换歌词面板 - `Ctrl + Shift + D`:切换桌面歌词显示 - `Ctrl + Shift + M`:切换同步模式 - `Ctrl + Shift + K`:显示快捷键列表 - `Ctrl + Shift + H`:显示帮助文档 ## 项目结构 ``` GoFile/ ├── main.py # 主程序入口 ├── theme_system.py # 主题系统管理 ├── toolbar_manager.py # 工具栏管理器 ├── layout_manager.py # 布局管理器 ├── system_integration.py # 系统集成功能 ├── file_handlers/ # 文件处理器模块 │ ├── base_handler.py # 基础处理器 │ ├── text_handler.py # 文本文件处理器 │ ├── image_handler.py # 图像文件处理器 │ ├── pdf_handler.py # PDF文件处理器 │ ├── office_handler.py # Office文件处理器 │ ├── ebook_handler.py # 电子书处理器 │ ├── audio_handler.py # 音频文件处理器 │ ├── video_handler.py # 视频文件处理器 │ └── handler_manager.py # 处理器管理器 ├── requirements.txt # 依赖包列表 ├── build.spec # PyInstaller构建配置 ├── build.bat # Windows构建脚本 ├── app.ico # 应用图标 └── README.md # 项目说明文档 ``` ## 开发指南 ### 添加新的文件处理器 1. 在 `file_handlers/` 目录下创建新的处理器文件 2. 继承 `BaseHandler` 类并实现必要的方法 3. 在 `handler_manager.py` 中注册新的处理器 ### 自定义主题 1. 创建新的主题配置文件 2. 在主题系统中注册新主题 3. 实现主题的样式定义 ## 构建和分发 ### 开发环境运行 ```bash python main.py ``` ### 构建可执行文件 使用PyInstaller构建独立的可执行文件: ```bash # Windows build.bat # 或手动执行 pyinstaller build.spec ``` 构建完成后,可执行文件位于 `dist/GoFile/` 目录中。 ## 常见问题 **Q: 应用启动时出现依赖包错误?** A: 请确保已安装所有依赖包:`pip install -r requirements.txt` **Q: 某些文件格式无法打开?** A: 检查是否安装了对应的处理器依赖包,如PDF需要PyMuPDF,Office文件需要相应的python包。 **Q: 工具栏设置丢失?** A: 工具栏配置保存在用户配置目录中,删除配置文件可重置为默认设置。 **Q: 在高DPI显示器上界面模糊?** A: PyQt6自动支持高DPI缩放,如有问题请检查系统显示设置。 ## 贡献指南 欢迎贡献代码和改进功能!请遵循以下步骤: 1. Fork 本项目到您的GitHub账户 2. 创建功能分支:`git checkout -b feature/your-feature-name` 3. 提交更改:`git commit -am 'Add some feature'` 4. 推送到分支:`git push origin feature/your-feature-name` 5. 创建Pull Request并详细描述更改内容 ### 代码规范 - 遵循PEP 8 Python代码规范 - 为新功能添加适当的文档字符串 - 确保代码通过现有的测试用例 - 为新功能编写相应的测试用例 ## 更新日志 ### v1.0.0 - 初始版本发布 - 支持多种文件格式的查看和编辑 - 实现自定义工具栏和主题系统 - 添加系统集成功能 - 基于PyQt6的现代化界面 ## 许可证 本项目采用 [MIT License](LICENSE),请查看项目根目录的 `LICENSE` 文件以获取详细信息。 ## 致谢 - 感谢PyQt6团队提供优秀的GUI框架 - 感谢所有开源依赖包的维护者 - 感谢社区贡献者的宝贵建议和代码贡献 - 感谢使用本项目的所有用户