PicoPixel

使用 event editor

使用 PicoPixel 的 event editor 让 UI 可交互:从一个 widget 拖出连接到另一个 widget,选择 click 或 value change 等 trigger,然后选择会发生什么。

ED Ed
events interactions picopixel lvgl triggers
已更新 2026-05-29
01 /09

概览

满屏按钮在你告诉它们被点击时该做什么之前,并不会真正工作。这就是 event editor 的任务:它让你的界面能够反应。本指南说明 event editor 是什么,拖拽连接机制如何工作,以及你可以选择的 triggers 和 actions 全菜单,全程无需编写代码。

02 /09

event editor 是什么?

event editor 让你把 widgets 连接起来,使一个 widget 上发生的操作能影响另一个 widget,或影响屏幕本身。每个连接都由三个简单部分组成:

  • A source,用户交互的 widget(例如 button)。
  • A trigger,用户对它做了什么(例如 click)。
  • An action,因此发生什么(例如 go to another screen),通常指向一个 destination widget 或 screen。

可以把它读成一句话:"When the user clicks this button, change to the Settings screen." 这就是一个 event。你可以添加任意多个 event,让整个界面动起来。

NOTE

Events 通过在 widgets 之间拖动连接来可视化构建,不需要脚本。导出项目时,PicoPixel 会把每个 event 转换成对应的 LVGL 代码。

03 /09

打开 event editor

选择任意 widget 或 screen,然后切换到右侧边栏的 Events 标签(它与 DesignInspect 并列)。这里每个 event 都会以卡片形式出现,你可以展开并配置它。

当你还没有创建任何 event 时,PicoPixel 会显示三种开始方式:

  1. 点击 + 按钮添加 event。
  2. 选择 widget 或 screen,然后从它拖出连接到另一个 widget 或 screen。
  3. 使用标题栏中的 play 按钮运行 events view 并试用。
04 /09

连接 widgets:将节点拖到目标

创建 event 最快的方式就在画布上:

  1. 选择 source widget,也就是你希望用户交互的对象。
  2. 抓住它边缘出现的小 connection handle,并拖出一条 wire 到你想影响的 widget 或 screen。
  3. 把它放到那个 destination 上。PicoPixel 会在两者之间画出一条曲线,并在 wire 上放一个小 node
  4. 点击该 node 选择 trigger(它会显示当前值,例如 "Clicked")。destination 和其他细节在 Events panel 中设置。

这条可视化 wire 就是 event。你可以一眼看出哪些 widgets 连接到了哪里。

PicoPixel 编辑器处于 Events 视图,显示 Low Opacity、High Opacity、Change Text、Set Properties - Size、Play Animation 等多个 button source 通过曲线连接到 image 和 label destination,每条 wire 带有 Clicked trigger node,右侧 Events panel 显示所选 event 的 Source、Trigger、Action、Opacity 和 Destination
▸ 每条曲线都是一个 event:source widget、trigger node 和 destination。Events panel 显示所选 event 的细节。
TIP

不想拖拽?也可以点击 Events panel 中的 + 按钮,然后从下拉菜单中填写 trigger、action 和 destination。结果一样,选择你觉得自然的方式即可。

05 /09

选择 trigger

trigger 是用户做了什么。点击 wire 上的 node(或 Events panel 中的 Trigger 下拉菜单)来选择。最常用的是 Clicked,但还有完整集合:

PicoPixel event editor 中打开的 Trigger 下拉菜单,列出可用 triggers:Clicked、Pressed、Released、Long Pressed、Long Pressed Repeat、Gesture、Value Changed、Ready、Cancel、Focused、Defocused、Screen Loaded、Screen Unloaded、Scroll Begin、Scroll End 和 Custom Event
▸ Trigger 下拉菜单列出可以附加到 event 的所有 trigger。未来版本计划加入更多 trigger。
  • Clicked,一次点击并松开。这是日常的 "button press",也是最常用的。
  • Pressed,手指触下的瞬间。
  • Released,手指抬起时。
  • Long Pressed / Long Pressed Repeat,长按,或长按并重复。
  • Gesture,滑动手势。
  • Value Changed,widget 的值变化时:slider 被拖动、switch 被切换、checkbox 被勾选。这是 sliders、switches 和 rollers 的自然 trigger。
  • Focused / Defocused,widget 获得或失去焦点时。
  • Screen Loaded / Screen Unloaded,screen 出现或离开时。很适合在屏幕打开的一刻做初始化。
  • Scroll Begin / Scroll End,开始或停止滚动时。
  • Ready / Cancel,用于屏幕键盘等输入控件。
TIP

选择适合 widget 的 trigger。Clicked 适合 button;slider 或 switch 更适合 Value Changed。选对 trigger,决定了 event 会触发还是永远不触发。

06 /09

选择 action

action 是会发生什么。你可以选择:

  • Change Screen,导航到另一个 screen。你可以选择 transition(Fade,或 Slide left/right/up/down),并设置速度和延迟。这是构建多屏应用的方式。
  • Delete Screen,转到另一个 screen 释放离开的 screen(对内存紧张设备很有用)。
  • Show Widget / Hide Widget,显示或隐藏内容。适合 pop-ups、panels 和 "more info" 区域。
  • Set State,在 widget 上添加、移除或切换 checkeddisabledfocusedpressed 等 state。
  • Set Opacity,将 widget 从完全可见(100)淡出到不可见(0)。
  • Set Properties,改变 widget 的位置或尺寸。
  • Set Text,更新 label 或 button 上显示的文字。
  • Set Sprite Mode,将 sprite 切换到某个 phase(如 "Idle" 或 "Running"),或启动/停止它。这正是让 sprite 有生命力的方式。
  • Animated Image Mode,启动、停止或重启动 animated image。
  • Play Animation,运行你在 widget 上设置的 timeline animation。
  • Modify Flag,更精细地添加/移除/切换 LVGL flag(高级选项)。
  • Call Function,按名称调用你自己的 custom C function。这是任何自定义逻辑的出口;你需要在固件中编写该函数。
07 /09

一个完整例子

假设你有一个 Home screen,上面有 "Settings" button,还有一个单独的 Settings screen。连接方式:

  1. 选择 Settings button
  2. 从它拖出连接到 Settings screen(或在 Events panel 中选择它作为 destination)。
  3. trigger 设为 Clicked
  4. action 设为 Change Screen,并把 destination 设为你的 Settings screen。
  5. 可选地选择 Slide left transition,让它感觉像向前移动。

点击 play 按钮,并在 live preview 中点击按钮,你会直接滑到 Settings。无需代码,无需刷机。

TIP

想让角色作出反应?添加一个 button,将 trigger 设为 Clicked,选择 Set Sprite Mode action,指向你的 sprite,并选择要切换的 phase(比如 "Happy")。现在点击按钮就会改变 sprite 的动画。关于如何构建 sprite,请看 sprites guide

08 /09

编辑和删除 events

你创建的每个 event 都会以卡片形式出现在 Events panel 中:

  • Edit,点击卡片展开它,并更改 trigger、action、destination 或 action 的选项。
  • Delete,使用卡片上的 删除该 event。它的 wire 也会从画布消失。

你可以给同一个 widget 附加多个 events,例如一个在 Pressed 上,另一个在 Released 上,以构建更丰富的交互。

09 /09

接下来

Events 会把静态 mock-up 变成真实界面。接下来可以:

  • sprites guide 中构建 animated、multi-state widgets,并用 Set Sprite Mode 驱动它们。
  • fonts guide 保持文字清晰且小巧。
  • 准备上硬件?按照 ESP32 tutorial 导出并刷入你的交互式 UI。
继续阅读

继续前进。

如何在 PicoPixel 中使用宠物 thumbnail
PICOPIXEL

如何在 PicoPixel 中使用宠物

宠物是预制的动画精灵,具有多种模式,可以在任意条件下触发。从目录中选一个,添加到项目中,然后将其连接起来,让它对设备正在做的任何事情做出反应:获取数据、过热、代码审查等等。

pets · sprites · picopixel
如何使用 PicoPixel templates、UI kits 和 full apps thumbnail
PICOPIXEL

如何使用 PicoPixel templates、UI kits 和 full apps

查找 PicoPixel templates、UI kits、examples、sprites、widgets 和 full app files,然后打开、下载、导入、自定义,并将它们导出为适用于设备的 LVGL C code。

templates · ui-kits · full-apps
什么是 sprite? thumbnail
PICOPIXEL

什么是 sprite?

了解 sprite 是什么,如何创建多状态 animated widgets,以及如何在项目之间复用它们。

sprite · picopixel