OpenEdv-开源电子网

 找回密码
 立即注册
查看: 3198|回复: 3

lvgl如何修改按钮上的文字标签

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2020-4-21
在线时间
1 小时
发表于 2021-4-19 01:23:00 | 显示全部楼层 |阅读模式
1金钱
  1. #include "user/app.h"

  2. lv_obj_t* btn2;
  3. lv_obj_t* led;
  4. lv_obj_t* label;


  5. static void event_handler(lv_obj_t* obj, lv_event_t event)
  6. {
  7.     if(event == LV_EVENT_VALUE_CHANGED)
  8.     {
  9.         if (lv_btn_get_state(btn2) != LV_BTN_STATE_RELEASED)
  10.         {
  11.         label = lv_label_create(btn2, NULL);
  12.         lv_label_set_long_mode(label, LV_LABEL_LONG_EXPAND);
  13.         lv_label_set_text(label, "ON");
  14.         printf("led on\n");
  15.         lv_led_on(led);
  16.         }
  17.         else
  18.         {
  19.         abel = lv_label_create(btn2, NULL);
  20.         lv_label_set_long_mode(label, LV_LABEL_LONG_EXPAND);
  21.         lv_label_set_text(label, "OFF");
  22.         printf("led off\n");
  23.         lv_led_off(led);
  24.         }
  25.     }
  26. }

  27. void my_application(void)
  28. {

  29.         btn2 = lv_btn_create(lv_scr_act(), NULL);
  30.         lv_obj_set_event_cb(btn2, event_handler);
  31.         lv_obj_align(btn2, lv_scr_act(), LV_ALIGN_CENTER, 0, 0);
  32.         lv_btn_set_checkable(btn2, true);
  33.         lv_btn_set_fit(btn2, LV_FIT_NONE);

  34.         //label = lv_label_create(btn2, NULL);
  35.         //lv_label_set_text(label, "OFF");

  36.         led = lv_led_create(lv_scr_act(), NULL);
  37.         lv_led_toggle(led);
  38.         lv_obj_align(led, NULL, LV_ALIGN_CENTER, 0, 120);

  39. }
复制代码

这是在visual studio 2019 上仿真使用的,按钮的效果是现实了,但是按钮上的文字不是我想要的效果,我想要实现的效果是,当按钮按下去的时候,按钮上显示“打开”,当按钮弹起来的时候,按钮上显示“关闭”,请问应该如何做,大佬们给点建议!!!

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2020-4-21
在线时间
1 小时
 楼主| 发表于 2021-4-19 01:23:01 | 显示全部楼层
代码如下
  1. #include "user/app.h"

  2. static lv_obj_t* btn1;
  3. static lv_obj_t* btn_label;

  4. static void btn_event_handler(lv_obj_t* obj, lv_event_t event)
  5. {
  6.     if (obj == btn1) {
  7.         if (event == LV_EVENT_VALUE_CHANGED) {
  8.             printf("Btn1 Toggled\n");
  9.             if (lv_btn_get_state(btn1) != LV_BTN_STATE_RELEASED)
  10.             {
  11.                 lv_label_set_text(btn_label, "ON");
  12.             }
  13.             else
  14.             {
  15.                 lv_label_set_text(btn_label, "OFF");
  16.             }
  17.             
  18.         }
  19.     }

  20. }

  21. void my_application(void)
  22. {
  23.     btn1 = lv_btn_create(lv_scr_act(), NULL);
  24.     lv_obj_set_event_cb(btn1, btn_event_handler);
  25.     lv_btn_set_checkable(btn1, true);
  26.     lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, 0);
  27.     lv_btn_set_fit2(btn1, LV_FIT_NONE, LV_FIT_TIGHT);

  28.     btn_label = lv_label_create(btn1, NULL);
  29.     lv_label_set_long_mode(btn_label, LV_LABEL_LONG_BREAK);
  30.     lv_label_set_text(btn_label, "OFF");
  31.    
  32. }
复制代码
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2020-4-21
在线时间
1 小时
 楼主| 发表于 2021-4-19 01:27:37 | 显示全部楼层
现在的现象是,第一次按下的时候,按钮上显示的是“ON”,第一次弹起的时候,按钮上显示的是“ON OFF“,第二次按下的时候,按钮上显示的是“OFF”,第二次弹起的时候,按钮上显示的是“OFF ON“,然后以此循环。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2020-4-21
在线时间
1 小时
 楼主| 发表于 2021-4-19 14:21:08 | 显示全部楼层
问题已经解决
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-10 04:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表