# python-view **Repository Path**: gaozhen1996/python-view ## Basic Information - **Project Name**: python-view - **Description**: 使用python 以及vue开发客户端程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-04-23 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # python-view 概述 python-view(又名 AGENT-PLUS)是一个使用 Python + Vue 2 构建的桌面客户端程序,通过 pywebview 将 Web 前端嵌入到原生窗口中,兼具 Web 开发的灵活性和桌面应用的原生体验。 --- 软件架构 ``` ┌─────────────────────────────────────────────────┐ │ 前端层 (Vue 2) │ │ ElementUI / iView / ECharts / codemirror ... │ │ ┌──────┐ ┌──────────┐ ┌──────────────────┐ │ │ │路由 │ │ 页面组件 │ │ 工具模块 (Global) │ │ │ └──────┘ └──────────┘ └──────────────────┘ │ ├─────────────────────────────────────────────────┤ │ 通信桥接层 │ │ ┌─────────────────┐ ┌────────────────────┐ │ │ │ pywebview JS API │ │ HTTP Server (可选) │ │ │ └─────────────────┘ └────────────────────┘ │ ├─────────────────────────────────────────────────┤ │ 后端层 (Python) │ │ ┌──────┐ ┌────────┐ ┌──────┐ ┌──────┐ ┌────┐ │ │ │ Api │ │ HttpSr.│ │ Srv │ │ Conf │ │Log │ │ │ └──────┘ └────────┘ └──────┘ └──────┘ └────┘ │ │ ┌──────────┐ ┌────────────┐ ┌──────────────┐ │ │ │ 对象池 │ │ 本地存储 │ │ 插件系统 │ │ │ └──────────┘ └────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────┘ ``` 技术栈 ``` ┌────────┬──────────────────────────────────────────────────┐ │ 层级 │ 技术 │ ├────────┼──────────────────────────────────────────────────┤ │ 前端 │ Vue 2 + Vue Router + ElementUI + ECharts + Axios │ ├────────┼──────────────────────────────────────────────────┤ │ 桌面壳 │ pywebview (支持 MSHTML/CEF 等多种 GUI 引擎) │ ├────────┼──────────────────────────────────────────────────┤ │ 后端 │ Python 3.9 + 内建 HTTP Server(http.server) │ ├────────┼──────────────────────────────────────────────────┤ │ 插件 │ Python 动态脚本加载(exec) │ ├────────┼──────────────────────────────────────────────────┤ │ 构建 │ Vue CLI 4 + auto-py-to-exe 打包 │ └────────┴──────────────────────────────────────────────────┘ ``` 核心模块说明 1. agentplus.py — 启动入口,根据操作系统选择 Windows(MainWin.py)或 macOS(MainMac.py)启动流程。 2. py_src/MainWin.py — Windows 主流程:先启动 tkinter 加载进度窗口(子线程),再创建 pywebview 窗口(主线程),窗口启动时最大化,隐藏后延迟显示避免白屏。 3. py_src/Api.py — JS-Python 桥接层,通过 pywebview.api 暴露给前端调用。提供 setItem/getItem(本地存储)、startServer(启动 HTTP 服务)、varFun(调用插件脚本)等方法。 4. py_src/HttpServer.py — 内置 HTTP 服务器(基于 http.server),支持 CORS,提供 REST API 模式,让前端可以通过 HTTP 调用后端功能。 5. py_src/ObjectPool.py — 对象池/依赖注入中心,统一管理全局单例(日志、存储、服务等)。 6. py_src/Srv.py — 脚本服务引擎,通过 exec 动态加载 plugins/ 目录下的 Python 脚本并执行。 7. py_src/ReadConfig.py — 配置读取器,读取 .env 配置文件(INI 格式),带缓存。 8. py_src/LocalStorage.py — 持久化本地存储,将键值对持久化到 .storage.json 文件。 --- 通信方式 系统支持两种前后端通信模式: - 客户端模式(C):通过 pywebview.api 直接在 JS 中调用 Python 方法,无网络开销。 - 浏览器模式(B):启动内置 HTTP Server,前端通过 Axios 发送 POST 请求到 127.0.0.1:18087。 切换逻辑:前端在 main.js 中检测 pywebviewready 事件,存在则为客户端模式,否则 fallback 到浏览器模式。 --- 功能特性 ``` ┌────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────┐ │ 特性 │ 说明 │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 桌面原生窗口 │ 使用 pywebview 嵌入 Web UI,无边框、支持最大化、可拖拽调整大小 │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 启动加载动画 │ tkinter 加载进度条窗口,避免 Web UI 加载期间的空白等待 │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 本地持久化存储 │ setItem/getItem 将数据持久化到 JSON 文件,前端透明调用 │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 内置 HTTP 服务 │ Python 标准库 HTTP Server,可独立启动提供 REST API │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 插件脚本系统 │ plugins/ 目录下放置 Python 脚本,通过 .env 配置映射,支持动态加载执行(varInterface 契约接口) │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 环境切换 │ 支持 DEV/PROD 环境切换,DEV 模式连接本地 dev-server 热更新 │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 日志系统 │ 按日期滚动写入 log/ 目录,含调用位置追踪,非生产环境同时输出到控制台 │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 跨平台 │ 支持 Windows(cefpython3)和 macOS │ ├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 打包部署 │ npm run build 构建前端静态资源,auto-py-to-exe 打包 Python 为 exe │ └────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` 这是一个典型的 Hybrid Desktop App 架构,核心设计理念是用 Vue 生态快速构建 UI,通过 pywebview 获得桌面原生能力,再通过 Python 插件系统实现业务逻辑的可扩展性。 ## 安装教程 依次执行: - npm install - npm run build - pip install pywebview -i https://pypi.tuna.tsinghua.edu.cn/simple - 如果gui='cef' 需要 pip install cefpython3 -i https://pypi.tuna.tsinghua.edu.cn/simple - pip install PyMuPDF -i https://pypi.tuna.tsinghua.edu.cn/simple ## 打包 - 打包静态资源文件 npm run build - python打包exe 建议使用 auto-py-to-exe ## 问题 - cef打包问题 https://blog.csdn.net/weixin_39709920/article/details/106092815 ## 版本 - Python 3.9.5 - auto-py-to-exe 2.36.0 ## 分支 ### base #### 功能特性 提供最基础的功能,支持插件脚本系统,可扩展业务逻辑。 #### 目录结构 ``` ├── agentplus.py # 启动入口 ├── .env # 配置文件 ├── py_src/ # Python 后端 │ ├── Api.py # JS-Python 桥接 API │ ├── MainWin.py # Windows 主流程 │ ├── MainMac.py # macOS 主流程 │ ├── HttpServer.py # 内置 HTTP 服务器 │ ├── Srv.py # 脚本服务引擎 │ ├── ObjectPool.py # 对象池 │ ├── ReadConfig.py # 配置读取 │ ├── LocalStorage.py # 本地持久化存储 │ └── Log.py # 日志系统 ├── src/ # Vue 前端 │ ├── main.js # 前端入口(含模式检测) │ ├── router/ # 路由配置 │ └── components/ # 页面组件 ├── plugins/ # 插件脚本目录 ├── dist/ # 构建输出 └── icons/ # 图标资源 ``` ### master 同base分支 ### agent #### 功能特性 **AI Agent(AI 助手)** - 基于 DeepSeek API 的智能对话 - 工具调用:读写文件、执行命令、搜索代码、网络搜索 - 流式输出,实时显示思考过程 - 对话历史管理(保存、加载、删除) - 自定义 System Prompt、Max Tokens 等参数 #### 目录结构 ``` ├── py_src/ # Python 后端 │ ├── Api.py # 前端 API 接口 │ ├── Agent.py # AI Agent 引擎(流式输出、工具调用) │ ├── AgentConfig.py # Agent 配置管理 │ ├── LLMClient.py # DeepSeek API 客户端 │ ├── ObjectPool.py # 全局对象池 │ ├── HttpServer.py # HTTP 服务器(浏览器模式) │ ├── LocalStorage.py # 本地 JSON 存储 │ └── tools/ # Agent 工具集 │ ├── read_file.py # 读取文件 │ ├── write_file.py # 写入文件 │ ├── edit_file.py # 编辑文件 │ ├── bash_tool.py # 执行命令 │ ├── glob_tool.py # 文件搜索 │ ├── grep_tool.py # 内容搜索 │ ├── web_search_tool.py # 网络搜索 │ └── web_fetch_tool.py # 网页抓取 ├── src/ # Vue 前端 │ └── components/page/ │ ├── AgentChat.vue # AI Agent 对话界面 │ └── AgentSettings.vue # Agent 配置界面 └── .storage.json # 本地持久化存储 ``` ### psi #### 功能特性 ``` ┌──────────────────┬──────────────┐ │ 插件 │ 功能 │ ├──────────────────┼──────────────┤ │ sellOrder_srv.py │ 销售订单管理 │ ├──────────────────┼──────────────┤ │ buyOrder_srv.py │ 采购订单管理 │ ├──────────────────┼──────────────┤ │ product_srv.py │ 产品数据管理 │ ├──────────────────┼──────────────┤ │ append_csv.py │ CSV 追加写入 │ ├──────────────────┼──────────────┤ │ delete_csv.py │ CSV 数据删除 │ ├──────────────────┼──────────────┤ │ demo_a.py │ 示例插件 │ └──────────────────┴──────────────┘ ``` #### 目录结构 ``` agentplus.py # 入口:根据 OS 类型启动不同主窗口 ├── py_src/MainWin.py # Windows 主窗口(Tkinter 启动页 + pywebview) ├── py_src/MainMac.py # macOS 主窗口(纯 pywebview) ├── py_src/ # Python 后端层 │ ├── Api.py # JS-Python 桥接 API(pywebview js_api) │ ├── Srv.py # 业务服务层 + 插件调度引擎 │ ├── HttpServer.py # 内嵌 HTTP 服务器 │ ├── ObjectPool.py # 全局对象池(单例管理) │ ├── LoadView.py # Tkinter 启动画面(含进度条、服务开关) │ ├── LocalStorage.py # 本地 JSON 持久化存储 │ ├── Log.py # 日志模块(按天滚动) │ └── ReadConfig.py # .env 配置文件读取 ├── src/ # Vue 2 前端层 │ ├── App.vue / main.js │ ├── components/ # 界面组件 │ └── router/ # 前端路由 ├── plugins/ # 插件热加载目录 │ ├── buyOrder_srv.py # 采购订单业务 │ ├── sellOrder_srv.py # 销售订单业务 │ ├── product_srv.py # 产品业务 │ ├── append_csv.py / delete_csv.py # CSV 增删操作 │ └── demo_a.py # 示例插件 └── dist/ # Vue 构建后的静态资源 ``` ### website-data #### 功能特性 数据抓取工具 ### agent-plus #### 功能特性 tms前置机工具