Ginthon是用Python+Web写的“视图窗口+稳定服务”的桌面端(Win、Mac、Linux)多功能程序基座。开箱即用但有一定上手门槛。

复制代码
代码习惯无复杂继承和类。

ApacheV2 License。

Ginthon 基于 pywebview、flask 等。无 PyQT。ApacheV2 License。

GUI 前端默认 Svelte5,运行于 Webview2、Webkit、WebKitGTK 中。

打包安装包体积在 55MB 左右,RAM 占用 170MB 左右。

全静态,可挂载其它语言程序编写的二进制子程序。

提醒:

Python版基座请戳:https://github.com/fyonecon/Ginthon (Open Code,ApacheV2 协议开源)。

Golang版基座请戳:https://github.com/fyonecon/Waigo (Closed Enterprise,商业闭源)。

Go和Py的基座代码都是"功能对齐+UI复用"的。

Go和Py都是以"尽量'返回默认值'代替'抛出Error'"+"尽量复用函数"+"尽量不使用继承"+"减少不必要的外部import"为原则。

拉取仓库:

窗口及服务·主程序(Ginthon-Main):

复制代码
git clone -b main https://github.com/fyonecon/Ginthon.git Ginthon-Main

然后将"GinthonDemo"关键词全局替换成你的项目名称即可成为你的应用名。

开发环境运行项目:

#在dev环境默认展开console,build环境默认无console。

python dev.py

打包成桌面安装包(.app、.exe、.deb等):

#底层使用 pyinstaller 打包。仅打包当前"CPU类型+操作系统类型"的安装包。

python build.py

项目结构:

Py命名原则:
  • 系统集文件夹名或文件名:小写+下划线
  • 自定义文件夹名:小驼峰
  • 自定义函数:小驼峰
  • 自定义变量:小驼峰
  • 自定义接口名:小写+下划线
Frontend命名原则:
  • 函数及变量:小写+下划线

  • 引号:双引号 使用优先于 单引号

    Ginthon-Main
    ├── build 打包运行时目录(自动生成)
    ├── dist 程序打包文件目录(自动生成。这里存放你打包后的app安装包)
    ├── docs 其它文档
    │ └── README-Docs.md 项目原理说明
    ├── flaskassets 软件内部的额外引用文件
    │ ├── files 其它可网络访问的文件
    │ └── html 额外的可暴露在外的web静态文件(单页应用)
    ├── frontend 前端或静态文件
    │ ├── tray (状态托盘二进制文件,自动创建)
    │ └── view 前端视图(默认SvelteKit)
    │ ├── src 视图发开发文件
    │ │ └── common 公共函数
    │ │ └── pages 页面具体实现
    │ │ └── parts 公用Svelte组件
    │ │ └── stores 绑定数据管理
    │ │ └── services 内置服务
    │ │ └── routes 路由、layout、公共参数验证
    │ ├── config.js 配置文件
    │ ├── readme.md 🔥前端操作记录与教程
    │ └── static 静态文件
    │ ├── appicon.png 应用Dock拦的icon
    │ ├── favicon.ico 网页默认icon
    │ ├── appicon.ico 网页默认icon
    │ ├── appicon.icns Mac应用图标
    ├── internal 后段时间或py核心代码
    │ ├── app 自定义的App功能
    │ │ ├── flask Web控制器目录
    │ │ ├── tray 状态栏托盘
    │ │ └── window 窗口服务目录
    │ │ ├── controller
    │ │ │ ├── do_events.py 操作窗口事件
    │ │ │ ├── js_call_py.py js调用py对照表
    │ │ │ ├── on_events.py 窗口运行事件
    │ │ │ ├── py_run_js.py py调用js对照表
    │ │ │ └── tray_events.py
    │ │ ├── window_route.py 窗口必要页面相关路由
    │ │ └── window_view.py 窗口页面html代码
    │ ├── bootstrap 框架加载核心
    │ │ ├── app_auth.py 认证与密钥相关
    │ │ ├── init_sys.py 检查系统及硬件
    │ │ ├── init_window.py 窗口服务
    │ │ ├── run_check_sys.py
    │ │ ├── run_flask.py Web服务
    │ │ ├── run_tray.py 启动状态栏托盘
    │ │ └── run_services.py 其它主页服务
    │ ├── common 公共函数、封装的kit
    │ │ ├── kits 公共函数的Kit
    │ │ │ ├── _7z.py 7Z解压
    │ │ │ ├── FILETYPE_DICT.py 各种文件对照表
    │ │ │ ├── ICON.py 程序icon的二进制
    │ │ │ ├── main_dirpath.py 虚拟路径
    │ │ │ ├── secret_aes.py 对称加密
    │ │ │ ├── shell.py PY运行shell
    │ │ │ ├── time_interval.py 定时器
    │ │ │ ├── txt_data.py 简单的文件型数据库
    │ │ │ ├── watch_pid.py
    │ │ │ └── watch_processes.py
    │ │ ├── func.py 公共函数
    │ │ ├── request_data.go 公用处理Flask Input请求参数函数
    │ │ └── translate.py 多语言翻译对照表
    │ └── config.py 系统配置信息
    │ ├── routes 自定义的路由
    │ │ └── ...py
    │ ├── services 服务
    │ │ ├── flask_middleware.py Web检测中间件
    │ │ └── services_for_time_interval.py 定时器
    ├── LICENSE
    ├── README.md 项目说明
    ├── requirements-win.txt Win下的依赖
    ├── requirements.txt 默认依赖
    ├── build.json 打包程序的配置文件
    ├── build.py 打包程序一键运行
    ├── dev.json 开发环境运行的配置文件
    ├── dev.py 开发环境一键运行
    ├── ginthon_tray.py 状态栏托盘入口
    ├── ginthon_tray.spec PYinstaller的SPEC打包文件参数
    ├── ginthon_window.py 视窗主程序入口
    └── ginthon_window.spec PYinstaller的SPEC打包文件参数

其它原理请戳 ./docs/README-Docs.md 文档。

相关推荐
m0_743623922 小时前
如何用 removeChild 与 remove 方法从页面 DOM 中移除元素
jvm·数据库·python
InfinteJustice2 小时前
JavaScript中null与undefined在双等号下的特殊性
jvm·数据库·python
m0_678485452 小时前
如何处理SQL空值填充_利用IFNULL函数保证数据完整性
jvm·数据库·python
一生了无挂2 小时前
Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider
大数据·python·信息可视化
m0_684501982 小时前
实现一个可精确定位、支持左右移动与删除的文本光标系统
jvm·数据库·python
weixin_408717772 小时前
HTML能写样式吗_style属性与内联样式风险【解答】
jvm·数据库·python
2501_914245932 小时前
Python如何计算NumPy数组的协方差矩阵_调用cov函数进行特征分析
jvm·数据库·python
xiangyong582 小时前
Python管理UV-命令&实例汇总(一)
开发语言·python·uv
Wyz201210242 小时前
优化 PySpark 中嵌套数组爆炸(explode)性能的关键策略
jvm·数据库·python