esp32-s3 lvgl例程使用lv_obj_get_index完整代码,请用代码举例
时间: 2023-07-16 16:13:59 浏览: 145
以下是一个使用 `lv_obj_get_index` 函数的 ESP32-S3 LVGL 示例代码:
```c
#include "lvgl/lvgl.h"
#include "lv_examples/lv_examples.h"
// 定义一个自定义的列表回调函数
static void list_button_action(lv_obj_t * button)
{
uint32_t index = lv_obj_get_index(button); // 获取按钮的索引
printf("Button %d is pressed\n", index);
}
void lvgl_example(void)
{
// 初始化 LVGL
lv_init();
// 创建一个屏幕
lv_obj_t * screen = lv_disp_get_scr_act(NULL);
// 创建一个垂直布局
lv_obj_t * layout = lv_obj_create(screen, NULL);
lv_obj_set_size(layout, LV_HOR_RES, LV_VER_RES);
lv_obj_set_flex_flow(layout, LV_FLEX_FLOW_COLUMN);
// 创建一个列表
lv_obj_t * list = lv_list_create(layout, NULL);
lv_obj_set_width(list, LV_HOR_RES);
lv_obj_align(list, NULL, LV_ALIGN_CENTER, 0, 0);
lv_list_set_sb_mode(list, LV_SB_MODE_AUTO);
// 添加几个列表按钮
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_OK, "Button 1");
lv_obj_set_event_cb(btn, list_button_action);
lv_obj_set_index(btn, 1); // 设置按钮的索引为 1
btn = lv_list_add_btn(list, LV_SYMBOL_OK, "Button 2");
lv_obj_set_event_cb(btn, list_button_action);
lv_obj_set_index(btn, 2); // 设置按钮的索引为 2
btn = lv_list_add_btn(list, LV_SYMBOL_OK, "Button 3");
lv_obj_set_event_cb(btn, list_button_action);
lv_obj_set_index(btn, 3); // 设置按钮的索引为 3
// 运行 LVGL
while (1) {
lv_task_handler();
esp_task_wdt_reset();
vTaskDelay(1);
}
}
```
在该代码中,我们创建了一个垂直布局,并在其中创建了一个列表。然后,我们添加了三个列表按钮,并分别使用 `lv_obj_set_index` 函数将它们的索引设置为 1、2 和 3。最后,我们实现了一个自定义的列表回调函数,它使用 `lv_obj_get_index` 函数获取被按下的按钮的索引,并将其打印到控制台上。
阅读全文