def draw_event_cb(e): obj = e.get_target() dsc = lv.obj_draw_part_dsc_t.__cast__(e.get_param()) # If the cells are drawn... if dsc.part == lv.PART.ITEMS: chk = obj.has_cell_ctrl(dsc.id, 0, lv.table.CELL_CTRL.CUSTOM_1) rect_dsc = lv.draw_rect_dsc_t() rect_dsc.init() if chk: rect_dsc.bg_color = lv.theme_get_color_primary(obj) else: rect_dsc.bg_color = lv.palette_lighten(lv.PALETTE.GREY,2) rect_dsc.radius = lv.RADIUS.CIRCLE sw_area = lv.area_t() sw_area.x1 = dsc.draw_area.x2 - 50; sw_area.x2 = sw_area.x1 + 40; sw_area.y1 = dsc.draw_area.y1 + dsc.draw_area.get_height() // 2 - 10 sw_area.y2 = sw_area.y1 + 20; lv.draw_rect(sw_area, dsc.clip_area, rect_dsc) rect_dsc.bg_color = lv.color_white() if chk: sw_area.x2 -= 2 sw_area.x1 = sw_area.x2 - 16 else: sw_area.x1 += 2 sw_area.x2 = sw_area.x1 + 16 sw_area.y1 += 2; sw_area.y2 -= 2; lv.draw_rect(sw_area, dsc.clip_area, rect_dsc)
chart.set_type(lv.chart.TYPE.BAR) chart.set_range(lv.chart.AXIS.PRIMARY_Y, 0, 100) chart.set_range(lv.chart.AXIS.SECONDARY_Y, 0, 400) chart.set_point_count(12) chart.add_event_cb(draw_event_cb, lv.EVENT.DRAW_PART_BEGIN, None) # Add ticks and label to every axis chart.set_axis_tick(lv.chart.AXIS.PRIMARY_X, 10, 5, 12, 3, True, 40) chart.set_axis_tick(lv.chart.AXIS.PRIMARY_Y, 10, 5, 6, 2, True, 50) chart.set_axis_tick(lv.chart.AXIS.SECONDARY_Y, 10, 5, 3, 4, True, 50) # Zoom in a little in X chart.set_zoom_x(800) # Add two data series ser1 = lv.chart.add_series(chart, lv.palette_lighten(lv.PALETTE.GREEN, 2), lv.chart.AXIS.PRIMARY_Y) ser2 = lv.chart.add_series(chart, lv.palette_darken(lv.PALETTE.GREEN, 2), lv.chart.AXIS.SECONDARY_Y) # Set the next points on 'ser1' chart.set_next_value(ser1, 31) chart.set_next_value(ser1, 66) chart.set_next_value(ser1, 10) chart.set_next_value(ser1, 89) chart.set_next_value(ser1, 63) chart.set_next_value(ser1, 56) chart.set_next_value(ser1, 32) chart.set_next_value(ser1, 35) chart.set_next_value(ser1, 57) chart.set_next_value(ser1, 85)
#!/opt/bin/lv_micropython -i import lvgl as lv import display_driver bg_color = lv.palette_lighten(lv.PALETTE.LIGHT_BLUE, 5) fg_color = lv.palette_darken(lv.PALETTE.BLUE, 4) qr = lv.qrcode(lv.scr_act(), 150, fg_color, bg_color) # Set data data = "https://lvgl.io" qr.update(data, len(data)) qr.center() # Add a border with bg_color qr.set_style_border_color(bg_color, 0) qr.set_style_border_width(5, 0)
rect_dsc.border_opa = lv.OPA._90 rect_dsc.border_color = lv.color_white() rect_dsc.shadow_width = 5 rect_dsc.shadow_ofs_x = 5 rect_dsc.shadow_ofs_y = 5 label_dsc = lv.draw_label_dsc_t() label_dsc.init() label_dsc.color = lv.palette_main(lv.PALETTE.YELLOW) cbuf = bytearray(_CANVAS_WIDTH * _CANVAS_HEIGHT * 4) canvas = lv.canvas(lv.scr_act()) canvas.set_buffer(cbuf, _CANVAS_WIDTH, _CANVAS_HEIGHT, lv.img.CF.TRUE_COLOR) canvas.center() canvas.fill_bg(lv.palette_lighten(lv.PALETTE.GREY, 3), lv.OPA.COVER) canvas.draw_rect(70, 60, 100, 70, rect_dsc) canvas.draw_text(40, 20, 100, label_dsc, "Some text on text canvas") # Test the rotation. It requires an other buffer where the orignal image is stored. # So copy the current image to buffer and rotate it to the canvas img = lv.img_dsc_t() img.data = cbuf[:] img.header.cf = lv.img.CF.TRUE_COLOR img.header.w = _CANVAS_WIDTH img.header.h = _CANVAS_HEIGHT canvas.fill_bg(lv_palette_lighten(LV_PALETTE_GREY, 3), LV_OPA_COVER) canvas.transform(img, 30, LV_IMG_ZOOM_NONE, 0, 0, _CANVAS_WIDTH // 2,
#!/opt/bin/lv_micropython -i import lvgl as lv import display_driver display_driver.getdisplay_landscape() # # Using the Shadow style properties # style = lv.style_t() style.init() # Set a background color and a radius style.set_radius(5) style.set_bg_opa(lv.OPA.COVER) style.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 1)) # Add a shadow style.set_shadow_width(8) style.set_shadow_color(lv.palette_main(lv.PALETTE.BLUE)) style.set_shadow_ofs_x(10) style.set_shadow_ofs_y(20) # Create an object with the new style obj = lv.obj(lv.scr_act()) obj.add_style(style, 0) obj.center()
import lvgl as lv import display_driver import time # # Create styles from scratch for buttons. # style_btn = lv.style_t() style_btn_red = lv.style_t() style_btn_pressed = lv.style_t() # Create a simple button style style_btn.init() style_btn.set_radius(10) style_btn.set_bg_opa(lv.OPA.COVER) style_btn.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 3)) style_btn.set_bg_grad_color(lv.palette_main(lv.PALETTE.GREY)) style_btn.set_bg_grad_dir(lv.GRAD_DIR.VER) # Add a border style_btn.set_border_color(lv.color_white()) style_btn.set_border_opa(lv.OPA._70) style_btn.set_border_width(2) # Set the text style style_btn.set_text_color(lv.color_white()) # Create a red style. Change only some colors. style_btn_red.init() style_btn_red.set_bg_color(lv.palette_main(lv.PALETTE.RED)) style_btn_red.set_bg_grad_color(lv.palette_lighten(lv.PALETTE.RED, 2))
import lvgl as lv import display_driver display_driver.getdisplay_landscape() ### Make style 1 style1 = lv.style_t() style1.init() style1.set_radius(5) # Make a gradient style1.set_bg_opa(lv.OPA.COVER) style1.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 1)) style1.set_bg_grad_color(lv.palette_main(lv.PALETTE.BLUE)) style1.set_bg_grad_dir(lv.GRAD_DIR.VER) # Shift the gradient to the bottom style1.set_bg_main_stop(128) style1.set_bg_grad_stop(192) ### Make style 2 style2 = lv.style_t() style2.init() style2.set_radius(5) # Make a gradient style2.set_bg_opa(lv.OPA.COVER) style2.set_bg_color(lv.palette_lighten(lv.PALETTE.YELLOW, 1)) style2.set_bg_grad_color(lv.palette_main(lv.PALETTE.RED)) style2.set_bg_grad_dir(lv.GRAD_DIR.HOR)
#!/opt/bin/lv_micropython -i import lvgl as lv import display_driver display_driver.getdisplay_landscape() # # Local styles # style = lv.style_t() style.init() style.set_bg_color(lv.palette_main(lv.PALETTE.GREEN)) style.set_border_color(lv.palette_lighten(lv.PALETTE.GREEN, 3)) style.set_border_width(3) obj = lv.obj(lv.scr_act()) obj.add_style(style, 0) # Overwrite the background color locally obj.set_style_bg_color(lv.palette_main(lv.PALETTE.ORANGE), lv.PART.MAIN) obj.center()
display_driver.getdisplay_landscape() def scroll_begin_event(e): #Disable the scroll animations. Triggered when a tab button is clicked */ if e.get_code() == lv.EVENT.SCROLL_BEGIN: a = lv.anim_t.__cast__(e.get_param()) if a: a.time = 0 # Create a Tab view object tabview = lv.tabview(lv.scr_act(), lv.DIR.LEFT, 80) tabview.get_content().add_event_cb(scroll_begin_event, lv.EVENT.SCROLL_BEGIN, None) tabview.set_style_bg_color(lv.palette_lighten(lv.PALETTE.RED, 2), 0) tab_btns = tabview.get_tab_btns() tab_btns.set_style_bg_color(lv.palette_darken(lv.PALETTE.GREY, 3), 0) tab_btns.set_style_text_color(lv.palette_lighten(lv.PALETTE.GREY, 5), 0) tab_btns.set_style_border_side(lv.BORDER_SIDE.RIGHT, lv.PART.ITEMS | lv.STATE.CHECKED) # Add 3 tabs (the tabs are page (lv_page) and can be scrolled tab1 = tabview.add_tab("Tab 1") tab2 = tabview.add_tab("Tab 2") tab3 = tabview.add_tab("Tab 3") tab4 = tabview.add_tab("Tab 4") tab5 = tabview.add_tab("Tab 5") tab2.set_style_bg_color(lv.palette_lighten(lv.PALETTE.AMBER, 3), 0)
#!/opt/bin/lv_micropython -i import lvgl as lv import display_driver display_driver.getdisplay_landscape() # # Add styles to parts and states # style_indic = lv.style_t() style_indic.init() style_indic.set_bg_color(lv.palette_lighten(lv.PALETTE.RED, 3)) style_indic.set_bg_grad_color(lv.palette_main(lv.PALETTE.RED)) style_indic.set_bg_grad_dir(lv.GRAD_DIR.HOR) style_indic_pr = lv.style_t() style_indic_pr.init() style_indic_pr.set_shadow_color(lv.palette_main(lv.PALETTE.RED)) style_indic_pr.set_shadow_width(10) style_indic_pr.set_shadow_spread(3) # Create an object with the new style_pr obj = lv.slider(lv.scr_act()) obj.add_style(style_indic, lv.PART.INDICATOR) obj.add_style(style_indic_pr, lv.PART.INDICATOR | lv.STATE.PRESSED) obj.set_value(70, lv.ANIM.OFF) obj.center()