So, I was attempting to switch from using the LLEMU to LVGL for this year’s game. While getting use to LVGL, I found that it was fairly simple to use and could effectively create most objects and have them appear on the screen; however I’m having issues with getting labels(text) to appear on the screen. So, I went to some tutorials and tried to have them help me, but I ended up just copying the code off of one of the tutorials. Only the labels that are a child to the buttons are showing up on my screen. Anytime I try to create a standalone label with the active screen as the parent or the page as a parent, it doesn’t appear. I have attached the code for the test graphics interface. Once again, everything is showing up and working perfectly except the label “myLabel” in this example. Does anyone know why this might be happening and how I can fix it?
lv_obj_t * myButton;
lv_obj_t * myButton2;
lv_obj_t * myButtonLabel;
lv_obj_t * myButtonLabel2;
lv_obj_t * myLabel;
lv_obj_t * myPage;
lv_style_t myButtonStyleREL; //relesed style
lv_style_t myButtonStylePR; //pressed style
static lv_res_t btn_click_action(lv_obj_t * btn)
{
uint8_t id = lv_obj_get_free_num(btn); //id usefull when there are multiple buttons
if(id == 0)
{
char buffer[100];
sprintf(buffer, "button was clicked %i milliseconds from start", pros::millis());
lv_label_set_text(myLabel, buffer);
}
return LV_RES_OK;
}
/**
* Runs initialization code. This occurs as soon as the program is started.
*
* All other competition modes are blocked by initialize; it is recommended
* to keep execution time for this mode under a few seconds.
*/
void initialize() {
int screen_width = lv_obj_get_width(lv_scr_act());
int screen_height = lv_obj_get_height(lv_scr_act());
//lv_tutorial_hello_world();
//gui();
lv_style_copy(&myButtonStyleREL, &lv_style_plain);
myButtonStyleREL.body.main_color = LV_COLOR_MAKE(150, 0, 0);
myButtonStyleREL.body.grad_color = LV_COLOR_MAKE(0, 0, 150);
myButtonStyleREL.body.radius = 0;
myButtonStyleREL.text.color = LV_COLOR_MAKE(255, 255, 255);
lv_style_copy(&myButtonStylePR, &lv_style_plain);
myButtonStylePR.body.main_color = LV_COLOR_MAKE(255, 0, 0);
myButtonStylePR.body.grad_color = LV_COLOR_MAKE(0, 0, 255);
myButtonStylePR.body.radius = 0;
myButtonStylePR.text.color = LV_COLOR_MAKE(255, 255, 255);
myPage = lv_page_create(lv_scr_act(),NULL);
lv_obj_align(myPage, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 0, screen_height * 0.1);
lv_obj_set_width(myPage, screen_width);
lv_obj_set_height(myPage, screen_height* 0.9);
myButton = lv_btn_create(myPage, NULL); //create button, lv_scr_act() is deafult screen object
lv_obj_set_free_num(myButton, 0); //set button is to 0
lv_btn_set_action(myButton, LV_BTN_ACTION_CLICK, btn_click_action); //set function to be called on button click
lv_btn_set_style(myButton, LV_BTN_STYLE_REL, &myButtonStyleREL); //set the relesed style
lv_btn_set_style(myButton, LV_BTN_STYLE_PR, &myButtonStylePR); //set the pressed style
lv_obj_set_size(myButton, 200, 50); //set the button size
lv_obj_align(myButton, NULL, LV_ALIGN_IN_TOP_LEFT, 10, 10); //set the position to top mid
myButton2 = lv_btn_create(myPage, NULL); //create button, lv_scr_act() is deafult screen object
lv_obj_set_free_num(myButton2, 1); //set button is to 0
lv_btn_set_action(myButton2, LV_BTN_ACTION_CLICK, btn_click_action); //set function to be called on button click
lv_btn_set_style(myButton2, LV_BTN_STYLE_REL, &myButtonStyleREL); //set the relesed style
lv_btn_set_style(myButton2, LV_BTN_STYLE_PR, &myButtonStylePR); //set the pressed style
lv_obj_set_size(myButton2, 200, 50); //set the button size
lv_obj_align(myButton2, NULL, LV_ALIGN_IN_TOP_RIGHT, -10, 10); //set the position to top mid
myButtonLabel = lv_label_create(myButton, NULL); //create label and puts it inside of the button
lv_label_set_text(myButtonLabel, "Click the Button"); //sets label text
myButtonLabel2 = lv_label_create(myButton2, NULL); //create label and puts it inside of the button
lv_label_set_text(myButtonLabel2, "Click the Button"); //sets label text
myLabel = lv_label_create(myPage, NULL); //create label and puts it on the screen
lv_obj_align(myLabel, NULL, LV_ALIGN_IN_TOP_LEFT, 5, 0); //set the position to center
lv_label_set_style(myLabel, &lv_style_plain);
lv_label_set_text(myLabel, "Button has not been clicked yet"); //sets label text
}