浅谈GUI库使用要点和递进层次
笔者从来没有进行过GUI库开发的相关工作,但是——一直很感兴趣!之前(2021春)曾经选修过一门关于react前端的课程,学习了一些前端之后。近期做毕设又用到了flet,对GUI的学习要点有了一点体悟,因此在此处介绍之。
私以为GUI库的学习和使用主要包括以下几个层次:
- GUI库学习
- 理解GUI库核心的render原理。重点在于:当发生了某些动作(比如按了按钮)使得一些组件的值发生了变化,GUI库是如何自动地捕捉并更新这些变化的组件的?
- 学习GUI库的各组件
- 基本组件,如展示文本,用于输入的文本框,按钮,checkbox,等等等等。
- 多媒体组件,如展示图片,展示视频等。
- 文件相关,如导入文件,导出文件,获取所导入文件的内容,等等。
- 记忆性操作。确保GUI库可以记忆一些配置或设定。
- GUI库使用
- 原则:写一点就调试一点。千万不要写很多然后一起调试,尤其是一开始不太熟的时候。
- 流程:
- view设计。基于目标功能将整个界面拆分为若干个子部分,并利用已有组件快速搭建这些子部分。
- 逻辑设计。通过组件的API和组件的render逻辑构建逻辑交互部分的代码。
- 总体上,应该积木战术。通过缝合已有的组件形成各个子部分,最后将所有的子部分进行组合。
已了解过的一些GUI库:
- EGUI。基于rust语言。该GUI库的render思路是:以极高的频率对所有的组件进行检测,如果检测到变动(比如按钮按下),那么就会执行对应的函数。函数如果产生了一些变量的变化,那么这些变化不会异步地进行更新,而是全同步地在这个极高的频率下进行更新。
- Flet,React:异步更新逻辑。