lv_example_scroll_2.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. def sw_event_cb(e,panel):
  2. code = e.get_code()
  3. sw = e.get_target()
  4. if code == lv.EVENT.VALUE_CHANGED:
  5. if sw.has_state(lv.STATE.CHECKED):
  6. panel.add_flag(lv.obj.FLAG.SCROLL_ONE)
  7. else:
  8. panel.clear_flag(lv.obj.FLAG.SCROLL_ONE)
  9. #
  10. # Show an example to scroll snap
  11. #
  12. panel = lv.obj(lv.scr_act())
  13. panel.set_size(280, 150)
  14. panel.set_scroll_snap_x(lv.SCROLL_SNAP.CENTER)
  15. panel.set_flex_flow(lv.FLEX_FLOW.ROW)
  16. panel.center()
  17. for i in range(10):
  18. btn = lv.btn(panel)
  19. btn.set_size(150, 100)
  20. label = lv.label(btn)
  21. if i == 3:
  22. label.set_text("Panel {:d}\nno snap".format(i))
  23. btn.clear_flag(lv.obj.FLAG.SNAPPABLE)
  24. else:
  25. label.set_text("Panel {:d}".format(i))
  26. label.center()
  27. panel.update_snap(lv.ANIM.ON)
  28. # Switch between "One scroll" and "Normal scroll" mode
  29. sw = lv.switch(lv.scr_act())
  30. sw.align(lv.ALIGN.TOP_RIGHT, -20, 10)
  31. sw.add_event_cb(lambda evt: sw_event_cb(evt,panel), lv.EVENT.ALL, None)
  32. label = lv.label(lv.scr_act())
  33. label.set_text("One scroll")
  34. label.align_to(sw, lv.ALIGN.OUT_BOTTOM_MID, 0, 5)