90% LVGL 新手踩大坑!分不清「父子控件」和「Python 子类」
上面我们说到了 LVGL 采用父子对象模型所有 UI 元素都是 lv.obj 的子类通过父子关系构建界面层级屏幕 → 按钮 → 标签这是新手最容易混淆的两个「父子 / 子类」概念。首先要明确LVGL 里的「父子对象模型」和 Python 类的「继承子类」是完全不同维度的设计对应 OOP面向对象的两个核心关系所谓「生成不同控件的实例」正是 LVGL 的has-a组合逻辑而 Python 类继承是is-a的类型扩展逻辑 ——LVGL 并没有抛弃继承控件类型本身是继承lv.obj的但界面组织的核心是「组合父子实例」而非「继承子类」。对于嵌入式 GUI 来说其核心需求是空间层级管理LCD屏幕是二维平面控件需要有空间归属和覆盖关系标签必须 “贴” 在按钮上按钮必须 “放在” 屏幕上渲染时要按「父 → 子」顺序绘制先画屏幕再画按钮最后画标签标签才会覆盖按钮隐藏 / 移动父控件时子控件要跟着一起隐藏 / 移动比如把按钮移到屏幕右侧按钮上的标签也要跟着走。并且控件之间的生命周期具有约束关系销毁父控件时会自动销毁所有子控件比如关闭窗口时窗口里的按钮、标签一起释放避免内存泄漏。同时 GUI 的交互点击、滑动、长按需要「事件冒泡」比如你点击按钮上的标签事件会先传给标签再传给按钮最后传给屏幕这种实例间的事件传递只能通过父子层级实现 —— 继承是类型关系两个LabeledButton实例之间没有任何关联无法传递事件。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2458592.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!