当前位置: 首页 > news >正文

ESP32 LVGL btn事件、label赋值、ddlist选项读取

我这里ESP32 LVGL使用Gui Guider图形化工具进行代码生产

1、 btn

需要在Gui Guider中启用事件,在btn上点击右键,选择事件添加

选中custom code(自定义代码),同时在通用中选中自定义

编辑,events_init.c文件中就会自动添加事件

static void main_screen_btn_1_event_handler (lv_event_t *e)
{lv_event_code_t code = lv_event_get_code(e);switch (code) {case LV_EVENT_CLICKED:{break;}default:break;}
}

 通过界面进行代码配置,点击按钮设置label的内容

2、label 

使用下面代码就可以设置label 的text为1

lv_label_set_text(guider_ui.main_screen_label_1, "1");

3、 ddlist

添加一个ddlist,增加3个选项

 需要在Gui Guider中启用事件,在ddlist上点击右键,选择事件添加

依次添加index:0,设置label_1的文本为1, index:1,设置label_1的文本为2,index:2,设置label_1的文本为3后运行

默认

选择3

生成代码如下

static void main_screen_ddlist_1_event_handler (lv_event_t *e)
{lv_event_code_t code = lv_event_get_code(e);switch (code) {case LV_EVENT_CLICKED:{uint16_t id = lv_dropdown_get_selected(guider_ui.main_screen_ddlist_1);switch(id) {case 0:{lv_obj_set_style_text_font(guider_ui.main_screen_label_1, &lv_font_montserratMedium_12, 0);lv_label_set_text(guider_ui.main_screen_label_1, "1");break;}case 1:{lv_obj_set_style_text_font(guider_ui.main_screen_label_1, &lv_font_montserratMedium_12, 0);lv_label_set_text(guider_ui.main_screen_label_1, "2");break;}case 2:{lv_obj_set_style_text_font(guider_ui.main_screen_label_1, &lv_font_montserratMedium_12, 0);lv_label_set_text(guider_ui.main_screen_label_1, "3");break;}default:break;}break;}default:break;}
}

通过界面进行代码配置

int number = 1234;
char buffer[20]; // 确保有足够的空间存储转换后的字符串
snprintf(buffer, sizeof(buffer), "%d", number);
// 现在你可以使用buffer中的字符串来显示数字
lv_label_set_text(guider_ui.main_screen_label_1, buffer);

4、roller

roller非常适合作为时间选择

// 获取选择项的索引
int selected_index = lv_roller_get_selected(roller);// 获取选择项的字符串
char selected_str[32];
lv_roller_get_selected_str(roller, selected_str, sizeof(selected_str));

放到事件里

static void roller_event_cb(lv_obj_t *roller, lv_event_t event) {if (event == LV_EVENT_VALUE_CHANGED) {char buf[32];lv_roller_get_selected_str(roller, buf, sizeof(buf));ESP_LOGI("LVGL", "选中的选项: %s", buf);}
}

通过界面进行代码配置,这里写一个全局变量int data_number=10;其他函数里也可用

 生成代码包含全局变量

代码内容

int data_number=10;static void main_screen_roller_1_event_handler (lv_event_t *e)
{lv_event_code_t code = lv_event_get_code(e);switch (code) {case LV_EVENT_CLICKED:{char buffer[32];data_number = 20;lv_roller_get_selected_str(guider_ui.main_screen_roller_1, buffer, sizeof(buffer));// 现在你可以使用buffer中的字符串来显示数字lv_label_set_text(guider_ui.main_screen_label_1, buffer);break;}default:break;}
}

效果

http://www.xdnf.cn/news/655039.html

相关文章:

  • NGINX 用户标识模块 (ngx_http_userid_module) 完整配置与最佳实践指南
  • 知识宇宙-职业篇:嵌入式工程师
  • Pycatia基础代码解析——零件设计篇(一)
  • ATT衰减器(Attenuator)介绍
  • 华为OD机试真题——洞穴探险(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • BGP配置命令详细框架
  • 营销推广需要解决哪些问题?
  • IP SSL证书:为IP地址提供安全加密的专业解决方案
  • 【论文解读】STaR:不用人类思维链指导,模型可以自我进化!
  • Go Web框架选型与实践:基于Gin的REST API开发指南
  • 【R语言科研绘图-最小二乘法】
  • 【混合动力能量管理新突破:负载识别优化策略深度解析与仿真实战】
  • [yolov11改进系列]基于yolov11引入级联群体注意力机制CGAttention的python源码+训练源码
  • 鸿蒙OSUniApp 实现带有滑动删除的列表#三方框架 #Uniapp
  • 基于GitHub Actions+SSH+PM2的Node.js自动化部署全流程指南
  • Nacos集群
  • 【向量数据库选型实战】FAISS vs Chroma vs Milvus vs Qdrant 全面对比
  • 【QT】QString和QStringList去掉空格的方法总结
  • day38python打卡
  • 构建版本没mac上传APP方法
  • 华为OD机试真题——猴子吃桃/爱吃蟠桃的孙悟空(2025B卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 【C++篇】list模拟实现
  • Qt qml Network error问题
  • 「读书报告」内网安全攻防
  • 每日算法-250526
  • GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【三】
  • 消防营区管理升级:豪越科技智能仓储与装备管理的力量
  • 【Java项目测试报告】:在线音乐平台(Online-Music)
  • 开发过的一个Coding项目
  • top查看 CPU使用情况