def __init__(self, app, page): self.app = app self.page = page self.page.set_flex_flow(lv.FLEX_FLOW.ROW) self.page.set_flex_align(lv.FLEX_ALIGN.SPACE_EVENLY, lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER) self.page.set_style_pad_all(10, lv.PART.MAIN) self.page.set_style_pad_gap(10, lv.PART.MAIN) self.chart = AnimatedChart(page, 100, 1000) self.chart.set_flex_grow(1) self.chart.set_height(lv.pct(100)) self.series1 = self.chart.add_series(lv.color_hex(0xFF0000), self.chart.AXIS.PRIMARY_Y) self.chart.set_type(self.chart.TYPE.LINE) self.chart.set_style_line_width(3, lv.PART.ITEMS) self.chart.add_style(ColorStyle(0x055), lv.PART.ITEMS) self.chart.set_range(self.chart.AXIS.PRIMARY_Y, 0, 100) self.chart.set_point_count(10) self.chart.set_ext_y_array(self.series1, [10, 20, 30, 20, 10, 40, 50, 90, 95, 90]) # self.chart.set_x_tick_texts("a\nb\nc\nd\ne", 2, lv.chart.AXIS.DRAW_LAST_TICK) # self.chart.set_x_tick_length(10, 5) # self.chart.set_y_tick_texts("1\n2\n3\n4\n5", 2, lv.chart.AXIS.DRAW_LAST_TICK) # self.chart.set_y_tick_length(10, 5) self.chart.set_div_line_count(5, 5) # Create a slider that controls the chart animation speed def on_slider_changed(event): self.chart.factor = self.slider.get_value() self.slider = lv.slider(page) self.slider.set_size(10, lv.pct(100)) self.slider.set_range(10, 200) self.slider.set_value(self.chart.factor, 0) self.slider.add_event_cb(on_slider_changed, lv.EVENT.VALUE_CHANGED, None)
def __init__(self, app, page): self.app = app self.page = page self.test_events = [] self.page.set_flex_flow(lv.FLEX_FLOW.COLUMN) self.page.set_flex_align(lv.FLEX_ALIGN.SPACE_EVENLY, lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER) # slider self.slider = lv.slider(page) self.slider.set_width(lv.pct(80)) self.slider_label = lv.label(page) self.slider.add_event_cb(self.on_slider_changed, lv.EVENT.VALUE_CHANGED, None) self.on_slider_changed(None) # style selector self.styles = [('Gray', ColorStyle(0xCCC)), ('Red', ColorStyle(0xF00)), ('Green', ColorStyle(0x0F0)), ('Blue', ColorStyle(0x00F))] self.style_selector = lv.dropdown(page) self.style_selector.add_style(ShadowStyle(), lv.PART.MAIN) self.style_selector.align(lv.ALIGN.OUT_BOTTOM_LEFT, 0, 40) self.style_selector.set_options('\n'.join(x[0] for x in self.styles)) self.style_selector.add_event_cb(self.on_style_selector_changed, lv.EVENT.VALUE_CHANGED, None) # counter button self.counter_btn = lv.btn(page) self.counter_btn.set_size(80, 80) self.counter_label = lv.label(self.counter_btn) self.counter_label.set_text("Count") self.counter_label.align(lv.ALIGN.CENTER, 0, 0) self.counter_btn.add_event_cb(self.on_counter_btn, lv.EVENT.CLICKED, None) self.counter = 0
# Create a container with ROW flex direction cont_row = lv.obj(lv.scr_act()) cont_row.set_size(300, 75) cont_row.align(lv.ALIGN.TOP_MID, 0, 5) cont_row.set_flex_flow(lv.FLEX_FLOW.ROW) # Create a container with COLUMN flex direction cont_col = lv.obj(lv.scr_act()) cont_col.set_size(200, 150) cont_col.align_to(cont_row, lv.ALIGN.OUT_BOTTOM_MID, 0, 5) cont_col.set_flex_flow(lv.FLEX_FLOW.COLUMN) for i in range(10): # Add items to the row obj = lv.btn(cont_row) obj.set_size(100, lv.pct(100)) label = lv.label(obj) label.set_text("Item: {:d}".format(i)) label.center() # Add items to the column obj = lv.btn(cont_col) obj.set_size(lv.pct(100), lv.SIZE.CONTENT) label = lv.label(obj) label.set_text("Item: {:d}".format(i)) label.center()
label = lv.label(tile1) label.set_text("Scroll down") label.center() # Tile2: a button tile2 = tv.add_tile(0, 1, lv.DIR.TOP | lv.DIR.RIGHT) btn = lv.btn(tile2) label = lv.label(btn) label.set_text("Scroll up or right") btn.set_size(lv.SIZE.CONTENT, lv.SIZE.CONTENT) btn.center() # Tile3: a list tile3 = tv.add_tile(1, 1, lv.DIR.LEFT) list = lv.list(tile3) list.set_size(lv.pct(100), lv.pct(100)) list.add_btn(None, "One") list.add_btn(None, "Two") list.add_btn(None, "Three") list.add_btn(None, "Four") list.add_btn(None, "Five") list.add_btn(None, "Six") list.add_btn(None, "Seven") list.add_btn(None, "Eight") list.add_btn(None, "Nine") list.add_btn(None, "Ten")
# # Translate the object as they scroll # cont = lv.obj(lv.scr_act()) cont.set_size(200, 200) cont.center() cont.set_flex_flow(lv.FLEX_FLOW.COLUMN) cont.add_event_cb(scroll_event_cb, lv.EVENT.SCROLL, None) cont.set_style_radius(lv.RADIUS.CIRCLE, 0) cont.set_style_clip_corner(True, 0) cont.set_scroll_dir(lv.DIR.VER) cont.set_scroll_snap_y(lv.SCROLL_SNAP.CENTER) cont.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) for i in range(20): btn = lv.btn(cont) btn.set_width(lv.pct(100)) label = lv.label(btn) label.set_text("Button " + str(i)) # Update the buttons position manually for first* lv.event_send(cont, lv.EVENT.SCROLL, None) # Be sure the fist button is in the middle #lv.obj.scroll_to_view(cont.get_child(0), lv.ANIM.OFF) cont.get_child(0).scroll_to_view(lv.ANIM.OFF)
#!//opt/bin/lv_micropython -i import time import lvgl as lv import display_driver # # Using the Size, Position and Padding style properties # style = lv.style_t() style.init() style.set_radius(5) # Make a gradient style.set_width(150) style.set_height(lv.SIZE.CONTENT) style.set_pad_ver(20) style.set_pad_left(5) style.set_x(lv.pct(50)) style.set_y(80) # Create an object with the new style obj = lv.obj(lv.scr_act()) obj.add_style(style, 0) label = lv.label(obj) label.set_text("Hello")