
上面我们说到了 LVGL 采用父子对象模型所有 UI 元素都是 lv.obj 的子类通过父子关系构建界面层级屏幕 → 按钮 → 标签这是新手最容易混淆的两个「父子 / 子类」概念。首先要明确LVGL 里的「父子对象模型」和 Python 类的「继承子类」是完全不同维度的设计对应 OOP面向对象的两个核心关系所谓「生成不同控件的实例」正是 LVGL 的has-a组合逻辑而 Python 类继承是is-a的类型扩展逻辑 ——LVGL 并没有抛弃继承控件类型本身是继承lv.obj的但界面组织的核心是「组合父子实例」而非「继承子类」。对于嵌入式 GUI 来说其核心需求是空间层级管理LCD屏幕是二维平面控件需要有空间归属和覆盖关系标签必须 “贴” 在按钮上按钮必须 “放在” 屏幕上渲染时要按「父 → 子」顺序绘制先画屏幕再画按钮最后画标签标签才会覆盖按钮隐藏 / 移动父控件时子控件要跟着一起隐藏 / 移动比如把按钮移到屏幕右侧按钮上的标签也要跟着走。并且控件之间的生命周期具有约束关系销毁父控件时会自动销毁所有子控件比如关闭窗口时窗口里的按钮、标签一起释放避免内存泄漏。同时 GUI 的交互点击、滑动、长按需要「事件冒泡」比如你点击按钮上的标签事件会先传给标签再传给按钮最后传给屏幕这种实例间的事件传递只能通过父子层级实现 —— 继承是类型关系两个LabeledButton实例之间没有任何关联无法传递事件。