Charmy GUI 文档¶
欢迎来到 Charmy GUI 的文档!
Charmy 是一个跨平台的 Python GUI 库,采用 三层架构 设计,后端可切换, 在保持轻量的同时实现跨平台桌面应用开发。
项目特点¶
三层架构:后端层 → 图形层 → 控件层,各层职责清晰
后端可切换:同一套 API 可对接不同底层图形库(目前仅 Genesis 后端)
事件驱动:基于发布-订阅模式的事件系统,支持条件过滤和事件链
自动 ID 管理:所有对象自动分配唯一 ID,支持通过 ID 查找
弱引用追踪:使用
weakref自动管理对象生命周期,无内存泄漏Fallback 机制:线条/图形类型自动降级,保证跨后端兼容
SVG 路径支持:内置完整的 SVG path 解析器,可直接绘制 SVG 图形
当前状态¶
小心
Charmy 处于 早期开发阶段 (v0.0.1),API 尚未稳定。
🚧 后端层:研制中(Genesis: SDL2 + Cairo)
✅ 图形层:基本完成(线条、形状、文字绘制)
🚧 控件层:进行中(仅 Button 可用,Frame/Text 为空壳)
🚧 事件系统:基本完成(鼠标事件已桥接)
❌ 布局管理:仅
place布局,尚无 pack/grid❌ 主题系统:基础框架存在,尚未接入控件
警告
Genesis仅作为当前场景下替代方案,后续将会被废弃,因为图形库与GUI库之间兼容性差
快速开始¶
import charmy as cm
window = cm.Window(size=(400, 300), title="我的应用")
button = cm.Button(window, text="点我", on_click=lambda: print("Hello!"))
button.place((50, 50), (120, 40))
cm.mainloop()
项目渊源¶
小技巧
项目原名为 Suzaku,因底层架构缺陷导致性能问题,重构为现在的 Charmy。
部分设计理念继承自 Suzaku,代码中保留了一些"彩蛋"作为纪念(如 skhynix.py)。