#!/opt/bin/lv_micropython -i import lvgl as lv import display_driver display_driver.getdisplay_landscape() # # Bar with LTR and RTL base direction # bar_ltr = lv.bar(lv.scr_act()) bar_ltr.set_size(200, 20) bar_ltr.set_value(70, lv.ANIM.OFF) bar_ltr.align(lv.ALIGN.CENTER, 0, -30) label = lv.label(lv.scr_act()) label.set_text("Left to Right base direction") label.align_to(bar_ltr, lv.ALIGN.OUT_TOP_MID, 0, -5) bar_rtl = lv.bar(lv.scr_act()) bar_rtl.set_style_base_dir(lv.BASE_DIR.RTL,0) bar_rtl.set_size(200, 20) bar_rtl.set_value(70, lv.ANIM.OFF) bar_rtl.align(lv.ALIGN.CENTER, 0, 30) label = lv.label(lv.scr_act()) label.set_text("Right to Left base direction") label.align_to(bar_rtl, lv.ALIGN.OUT_TOP_MID, 0, -5)
else: txt_area.x1 = dsc.draw_area.x2 + 5 txt_area.x2 = txt_area.x1 + txt_size.x - 1 label_dsc.color = lv.color_black() txt_area.y1 = dsc.draw_area.y1 + (dsc.draw_area.get_height() - txt_size.y) // 2 txt_area.y2 = txt_area.y1 + txt_size.y - 1 lv.draw_label(txt_area, dsc.clip_area, label_dsc, value_txt, None) # # Custom drawer on the bar to display the current value # bar = lv.bar(lv.scr_act()) bar.add_event_cb(event_cb, lv.EVENT.DRAW_PART_END, None) bar.set_size(200, 20) bar.center() a = lv.anim_t() a.init() a.set_var(bar) a.set_values(0, 100) a.set_custom_exec_cb(lambda a, val: set_value(bar, val)) a.set_time(2000) a.set_playback_time(2000) a.set_repeat_count(lv.ANIM_REPEAT.INFINITE) lv.anim_t.start(a)
def visuals_create(parent): page = lv.page.__cast__(parent) lv.page.set_scrl_layout(page, lv.LAYOUT.PRETTY_TOP) disp_size = display.get_size_category() grid_h_chart = lv.page.get_height_grid(page, 1, 1) if disp_size <= lv.DISP_SIZE.LARGE: grid_w_chart = lv.page.get_width_grid(page, 1, 1) else: grid_w_chart = lv.page.get_width_grid(page, 1, 2) chart = lv.chart(parent, None) chart.add_style(lv.chart.PART.BG, style_box) if disp_size <= lv.DISP_SIZE.SMALL: chart.set_style_local_text_font(lv.chart.PART.SERIES_BG, lv.STATE.DEFAULT, lv.theme_get_font_small()) chart.set_drag_parent(True) chart.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT, "Line chart") chart.set_width_margin(grid_w_chart) chart.set_height_margin(grid_h_chart) chart.set_div_line_count(3, 0) chart.set_point_count(8) chart.set_type(lv.chart.TYPE.LINE) if disp_size > lv.DISP_SIZE.SMALL: chart.set_style_local_pad_left(lv.chart.PART.BG, lv.STATE.DEFAULT, 4 * (LV_DPI // 10)) chart.set_style_local_pad_bottom(lv.chart.PART.BG, lv.STATE.DEFAULT, 3 * (LV_DPI // 10)) chart.set_style_local_pad_right(lv.chart.PART.BG, lv.STATE.DEFAULT, 2 * (LV_DPI // 10)) chart.set_style_local_pad_top(lv.chart.PART.BG, lv.STATE.DEFAULT, 2 * (LV_DPI // 10)) chart.set_y_tick_length(0, 0) chart.set_x_tick_length(0, 0) chart.set_y_tick_texts("600\n500\n400\n300\n200", 0, lv.chart.AXIS.DRAW_LAST_TICK) chart.set_x_tick_texts("Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug", 0, lv.chart.AXIS.DRAW_LAST_TICK) s1 = chart.add_series(LV_THEME_DEFAULT_COLOR_PRIMARY) s2 = chart.add_series(LV_THEME_DEFAULT_COLOR_SECONDARY) chart.set_next(s1, 10) chart.set_next(s1, 90) chart.set_next(s1, 30) chart.set_next(s1, 60) chart.set_next(s1, 10) chart.set_next(s1, 90) chart.set_next(s1, 30) chart.set_next(s1, 60) chart.set_next(s1, 10) chart.set_next(s1, 90) chart.set_next(s2, 32) chart.set_next(s2, 66) chart.set_next(s2, 5) chart.set_next(s2, 47) chart.set_next(s2, 32) chart.set_next(s2, 32) chart.set_next(s2, 66) chart.set_next(s2, 5) chart.set_next(s2, 47) chart.set_next(s2, 66) chart.set_next(s2, 5) chart.set_next(s2, 47) chart2 = lv.chart(parent, chart) chart2.set_type(lv.chart.TYPE.COLUMN) chart2.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT, "Column chart") s1 = chart2.add_series(LV_THEME_DEFAULT_COLOR_PRIMARY) s2 = chart2.add_series(LV_THEME_DEFAULT_COLOR_SECONDARY) chart2.set_next(s1, 10) chart2.set_next(s1, 90) chart2.set_next(s1, 30) chart2.set_next(s1, 60) chart2.set_next(s1, 10) chart2.set_next(s1, 90) chart2.set_next(s1, 30) chart2.set_next(s1, 60) chart2.set_next(s1, 10) chart2.set_next(s1, 90) chart2.set_next(s2, 32) chart2.set_next(s2, 66) chart2.set_next(s2, 5) chart2.set_next(s2, 47) chart2.set_next(s2, 32) chart2.set_next(s2, 32) chart2.set_next(s2, 66) chart2.set_next(s2, 5) chart2.set_next(s2, 47) chart2.set_next(s2, 66) chart2.set_next(s2, 5) chart2.set_next(s2, 47) if disp_size <= lv.DISP_SIZE.SMALL: grid_w_meter = lv.page.get_width_grid(page, 1, 1) elif disp_size <= lv.DISP_SIZE.MEDIUM: grid_w_meter = lv.page.get_width_grid(page, 2, 1) else: grid_w_meter = lv.page.get_width_grid(page, 3, 1) meter_h = lv.page.get_height_fit(page) if grid_w_meter < meter_h: meter_size = grid_w_meter else: meter_size = meter_h lmeter = lv.linemeter(parent, None) lmeter.set_drag_parent(True) lmeter.set_value(50) lmeter.set_size(meter_size, meter_size) lmeter.add_style(lv.linemeter.PART.MAIN, style_box) lmeter.set_style_local_value_str(lv.linemeter.PART.MAIN, lv.STATE.DEFAULT, "Line meter") label = lv.label(lmeter, None) label.align(lmeter, lv.ALIGN.CENTER, 0, 0) label.set_style_local_text_font(lv.label.PART.MAIN, lv.STATE.DEFAULT, lv.theme_get_font_title()) a_lm = lv.anim_t() a_lm.init() a_lm.set_custom_exec_cb(lambda a, val: linemeter_anim(a, lmeter, val)) a_lm.set_values(0, 100) a_lm.set_time(4000) a_lm.set_playback_time(1000) a_lm.set_repeat_count(LV_ANIM_REPEAT_INFINITE) lv.anim_t.start(a_lm) gauge = lv.gauge(parent, None) gauge.set_drag_parent(True) gauge.set_size(meter_size, meter_size) gauge.add_style(lv.gauge.PART.MAIN, style_box) gauge.set_style_local_value_str(lv.gauge.PART.MAIN, lv.STATE.DEFAULT, "Gauge") label = lv.label(gauge, label) label.align(gauge, lv.ALIGN.CENTER, 0, grid_w_meter // 3) a_ga = lv.anim_t() a_ga.init() a_ga.set_custom_exec_cb(lambda a, val: linemeter_anim(a, lmeter, val)) a_ga.set_values(0, 100) a_ga.set_time(4000) a_ga.set_playback_time(1000) a_ga.set_repeat_count(LV_ANIM_REPEAT_INFINITE) a_ga.set_custom_exec_cb(lambda a, val: gauge_anim(a, gauge, val)) lv.anim_t.start(a_ga) arc = lv.arc(parent, None) arc.set_drag_parent(True) arc.set_bg_angles(0, 360) arc.set_rotation(270) arc.set_angles(0, 0) arc.set_size(meter_size, meter_size) arc.add_style(lv.arc.PART.BG, style_box) arc.set_style_local_value_str(lv.arc.PART.BG, lv.STATE.DEFAULT, "Arc") label = lv.label(arc) label.align(arc, lv.ALIGN.CENTER, 0, 0) a_arc = lv.anim_t() a_arc.init() a_arc.set_custom_exec_cb(lambda a_arc, val: anim_phase1(a_arc, arc, val)) a_arc.set_values(0, 360) a_arc.set_ready_cb(lambda a: arc_phase1_ready_cb(a, arc)) # a_arc.set_repeat_count(LV_ANIM_REPEAT_INFINITE) a_arc.set_time(1000) lv.anim_t.start(a_arc) # Create a bar and use the backgrounds value style property to display the current value bar_h = lv.cont(parent, None) bar_h.set_fit2(lv.FIT.NONE, lv.FIT.TIGHT) bar_h.add_style(lv.cont.PART.MAIN, style_box) bar_h.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT, "Bar") if disp_size <= lv.DISP_SIZE.SMALL: bar_h.set_width(lv.page_get_width_grid(page, 1, 1)) elif disp_size <= lv.DISP_SIZE.MEDIUM: bar_h.set_width(lv.page.get_width_grid(page, 2, 1)) else: bar_h.set_width(lv.page.get_width_grid(parent, 3, 2)) bar = lv.bar(bar_h, None) bar.set_width(lv.cont.get_width_fit(bar_h)) bar.set_style_local_value_font(lv.bar.PART.BG, lv.STATE.DEFAULT, lv.theme_get_font_small()) bar.set_style_local_value_align(lv.bar.PART.BG, lv.STATE.DEFAULT, lv.ALIGN.OUT_BOTTOM_MID) bar.set_style_local_value_ofs_y(lv.bar.PART.BG, lv.STATE.DEFAULT, LV_DPI // 20) bar.set_style_local_margin_bottom(lv.bar.PART.BG, lv.STATE.DEFAULT, LV_DPI // 7) bar.align(None, lv.ALIGN.CENTER, 0, 0) bar.set_value(30, lv.ANIM.OFF) led_h = lv.cont(parent, None) led_h.set_layout(lv.LAYOUT.PRETTY_MID) if disp_size <= lv.DISP_SIZE.SMALL: led_h.set_width(lv.page.get_width_grid(page, 1, 1)) elif disp_size <= lv.DISP_SIZE.MEDIUM: led_h.set_width(lv.page.get_width_grid(page, 2, 1)) else: led_h.set_width(lv.page.get_width_grid(page, 3, 1)) led_h.set_height(lv.obj.get_height(lv.obj.__cast__(bar_h))) led_h.add_style(lv.cont.PART.MAIN, style_box) led_h.set_drag_parent(True) led_h.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT, "LEDs") led = lv.led(led_h, None) led_size = lv.obj.get_height_fit(lv.obj.__cast__(led_h)) led.set_size(led_size, led_size) led.off() led = lv.led(led_h, led) led.set_bright((LV_LED_BRIGHT_MAX - LV_LED_BRIGHT_MIN) // 2 + LV_LED_BRIGHT_MIN) led = lv.led(led_h, led) led.on() if disp_size == lv.DISP_SIZE.MEDIUM: led_h.add_protect(lv.PROTECT.POS) led_h.align( bar_h, lv.ALIGN.OUT_BOTTOM_MID, 0, lv.obj.get_style_margin_top(lv.obj.__cast__(led_h), lv.obj.PART.MAIN) + lv.obj.get_style_pad_inner(parent, lv.page.PART.SCROLLABLE)) task = lv.task_create_basic() task.set_cb(lambda task: bar_anim(task, bar)) task.set_period(100) task.set_prio(lv.TASK_PRIO.LOWEST)
def home_open(self, delay): self.bg_top.set_style_local_bg_opa(lv.obj.PART.MAIN, lv.STATE.DEFAULT, lv.OPA.COVER) self.bg_top.set_style_local_bg_color(lv.obj.PART.MAIN, lv.STATE.DEFAULT, LV_DEMO_PRINTER_BLUE) self.bg_top.set_y(self.LV_DEMO_PRINTER_BG_NORMAL) self.cont = lv.cont(lv.scr_act(), None) self.cont.set_size(350, 80) self.cont.clean_style_list(lv.cont.PART.MAIN) self.cont.align(None, lv.ALIGN.IN_TOP_LEFT, 60, 0) icon = lv.img(self.cont, None) icon.set_src(self.icon_wifi_dsc) icon.align(None, lv.ALIGN.IN_TOP_LEFT, 20, 45) self.anim_in(icon, delay) icon = lv.img(self.cont, None) icon.set_src(self.icon_tel_dsc) icon.align(None, lv.ALIGN.IN_TOP_LEFT, 110, 45) self.anim_in(icon, delay) icon = lv.img(self.cont, None) icon.set_src(self.icon_eco_dsc) icon.align(None, lv.ALIGN.IN_TOP_LEFT, 200, 45) self.anim_in(icon, delay) icon = lv.img(self.cont, None) icon.set_src(self.icon_pc_dsc) icon.align(None, lv.ALIGN.IN_TOP_LEFT, 290, 45) self.anim_in(icon, delay) title = self.add_title("23 February 2021 20:13") title.align(None, lv.ALIGN.IN_TOP_RIGHT, -60, LV_DEMO_PRINTER_TITLE_PAD) delay += self.LV_DEMO_PRINTER_ANIM_DELAY self.anim_in(title, delay) box_w = 720 box = lv.obj(lv.scr_act(), None) box.set_size(box_w, 260) self.theme.apply(box, lv.THEME.CONT) box.align(None, lv.ALIGN.IN_TOP_MID, 0, 100) delay += self.LV_DEMO_PRINTER_ANIM_DELAY self.anim_in(box, delay) icon = self.add_icon(box, self.img_btn_bg_1_dsc, self.img_copy_dsc, "COPY") icon.align(None, lv.ALIGN.IN_LEFT_MID, 1 * (box_w - 20) // 8 - 80, 0) icon.set_event_cb(self.copy_open_icon_event_cb) icon.fade_in(self.LV_DEMO_PRINTER_ANIM_TIME * 2, delay + self.LV_DEMO_PRINTER_ANIM_TIME + 50) icon = self.add_icon(box, self.img_btn_bg_2_dsc, self.img_scan_dsc, "SCAN") icon.align(None, lv.ALIGN.IN_LEFT_MID, 3 * (box_w - 20) // 8 - 80, 0) icon.fade_in(self.LV_DEMO_PRINTER_ANIM_TIME * 2, delay + self.LV_DEMO_PRINTER_ANIM_TIME + 50) icon.set_event_cb(self.scan_open_icon_event_cb) icon = self.add_icon(box, self.img_btn_bg_3_dsc, self.img_print_dsc, "PRINT") icon.align(None, lv.ALIGN.IN_LEFT_MID, 5 * (box_w - 20) // 8 - 80, 0) icon.fade_in(self.LV_DEMO_PRINTER_ANIM_TIME * 2, delay + self.LV_DEMO_PRINTER_ANIM_TIME + 50) icon.set_event_cb(self.print_open_event_cb) icon = self.add_icon(box, self.img_btn_bg_4_dsc, self.img_setup_dsc, "SETUP") icon.align(None, lv.ALIGN.IN_LEFT_MID, 7 * (box_w - 20) // 8 - 80, 0) icon.fade_in(self.LV_DEMO_PRINTER_ANIM_TIME * 2, delay + self.LV_DEMO_PRINTER_ANIM_TIME + 50) icon.set_event_cb(self.setup_icon_event_cb) box = lv.obj(lv.scr_act(), None) box.set_size(500, 80) box.align(None, lv.ALIGN.IN_BOTTOM_LEFT, self.LV_HOR_RES // 20, -self.LV_HOR_RES // 40) label = lv.label(box, None) label.set_text("What do you want to do today?") self.theme.apply(label, lv.THEME.LABEL) label.align(box, lv.ALIGN.CENTER, 0, 0) delay += self.LV_DEMO_PRINTER_ANIM_DELAY self.anim_in(box, delay) box = lv.obj(lv.scr_act(), None) box_w = 200 box.set_size(box_w, 80) box.align(None, lv.ALIGN.IN_BOTTOM_RIGHT, -self.LV_HOR_RES // 20, -self.LV_HOR_RES // 40) bar = lv.bar(box, None) bar.set_style_local_bg_color(lv.bar.PART.INDIC, lv.STATE.DEFAULT, lv.color_hex(0x01d3d4)) bar.set_size(25, 50) bar.align(None, lv.ALIGN.IN_LEFT_MID, 1 * (box_w - 20) // 8 + 10, 0) bar.set_value(60, lv.ANIM.ON) bar = lv.bar(box, None) bar.set_style_local_bg_color(lv.bar.PART.INDIC, lv.STATE.DEFAULT, lv.color_hex(0xe600e6)) bar.set_size(25, 50) bar.align(None, lv.ALIGN.IN_LEFT_MID, 3 * (box_w - 20) // 8 + 10, 0) bar.set_value(30, lv.ANIM.ON) bar = lv.bar(box, None) bar.set_style_local_bg_color(lv.bar.PART.INDIC, lv.STATE.DEFAULT, lv.color_hex(0xefef01)) bar.set_size(25, 50) bar.align(None, lv.ALIGN.IN_LEFT_MID, 5 * (box_w - 20) // 8 + 10, 0) bar.set_value(80, lv.ANIM.ON) bar = lv.bar(box, None) bar.set_style_local_bg_color(lv.bar.PART.INDIC, lv.STATE.DEFAULT, lv.color_hex(0x1d1d25)) bar.set_size(25, 50) bar.align(None, lv.ALIGN.IN_LEFT_MID, 7 * (box_w - 20) // 8 + 10, 0) bar.set_value(20, lv.ANIM.ON)
#!/opt/bin/lv_micropython -i import lvgl as lv import display_driver display_driver.getdisplay_landscape() bar1 = lv.bar(lv.scr_act()) bar1.set_size(200, 20) bar1.center() bar1.set_value(70, lv.ANIM.OFF)
#!/opt/bin/lv_micropython -i import time import lvgl as lv import display_driver # create a simple bar bar1 = lv.bar(lv.scr_act(), None) bar1.set_size(200, 20) bar1.align(None, lv.ALIGN.CENTER, 0, 0) bar1.set_anim_time(2000) bar1.set_value(100, lv.ANIM.ON)
else: with open(TOUCH_CALI_FILE, 'r') as f: param = ujson.load(f) touch_x0 = param['cal_x0'] touch_x1 = param['cal_x1'] touch_y0 = param['cal_y0'] touch_y1 = param['cal_y1'] touch = xpt2046( cs=TOUCH_CS, transpose=TFT_IS_PORTRAIT, cal_x0=touch_x0, cal_x1=touch_x1, cal_y0=touch_y0, cal_y1=touch_y1, ) TOUCH_READY = 1 #表示已经配置好触摸参数 ############################################# #################### Bar ################## ############################################# if TOUCH_READY: bar = lv.bar(lv.scr_act()) #构建进度条对象 bar.set_size(200, 30) #设置尺寸 bar.align(None, lv.ALIGN.CENTER, 0, 0) #居中 bar.set_anim_time(1000) #进度条加载时间 bar.set_value(100, lv.ANIM.ON) #进度条最大值100(满),lv.ANIM.ON表示动画效果。