M5Roller

M5Roller是一个可用于在用户界面中创建滚轮(旋转器/滚轮选择器)的控件。它提供了一个可滚动的选项列表,用户可以通过向上或向下滚动来选择,类似于iOS风格的选择器滚轮。

UiFlow2 示例

基础滚轮

在UiFlow2中打开 cores3_roller_basic_example.m5f2 项目。

此示例演示如何创建具有多个选项的滚轮并处理选择事件。

UiFlow2 代码块:

cores3_roller_basic_example.png

示例输出:

None

MicroPython 示例

基础滚轮

此示例演示如何创建具有多个选项的滚轮并处理选择事件。

MicroPython 代码块:

 1import os, sys, io
 2import M5
 3from M5 import *
 4import m5ui
 5import lvgl as lv
 6
 7
 8page0 = None
 9roller0 = None
10
11
12def setup():
13    global page0, roller0
14
15    M5.begin()
16    Widgets.setRotation(1)
17    m5ui.init()
18    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
19    roller0 = m5ui.M5Roller(
20        x=110,
21        y=71,
22        w=100,
23        h=0,
24        options=[
25            "January",
26            "February",
27            "March",
28            "April",
29            "May",
30            "June",
31            "July",
32            "August",
33            "September",
34            "October",
35            "November",
36            "December",
37        ],
38        mode=lv.roller.MODE.INFINITE,
39        selected=0,
40        visible_row_count=3,
41        font=lv.font_montserrat_14,
42        parent=page0,
43    )
44
45    page0.screen_load()
46    print(roller0.get_options())
47
48
49def loop():
50    global page0, roller0
51    M5.update()
52
53
54if __name__ == "__main__":
55    try:
56        setup()
57        while True:
58            loop()
59    except (Exception, KeyboardInterrupt) as e:
60        try:
61            m5ui.deinit()
62            from utility import print_error_msg
63
64            print_error_msg(e)
65        except ImportError:
66            print("please update to latest firmware")

示例输出:

None

API参考

M5Roller

class m5ui.roller.M5Roller(*args, **kwargs)

基类:roller

创建一个滚轮控件。

参数:
  • x (int) – 控件的X位置。

  • y (int) – 控件的Y位置。

  • w (int) – 控件的宽度。

  • h (int) – 控件的高度。

  • options (list) – 要在滚轮中显示的选项列表。

  • mode (lv.roller.MODE) – 滚轮模式(默认为NORMAL)。

  • selected (int) – 初始选中选项的索引。

  • visible_row_count (int) – 滚轮中可见行数。

  • font (lv.font_t) – 滚轮中文本使用的字体。

  • parent (lv.obj or None) – 要附加此滚轮的父控件(默认为活动屏幕)。

UiFlow2 代码块:

None

MicroPython 代码块:

from m5ui import M5Roller
import lvgl as lv
m5ui.init()
roller_0 = M5Roller(x=10, y=10, w=100, h=100, options=["Option 1", "Option 2"], mode=lv.roller.MODE.NORMAL, selected=0, visible_row_count=2, font=lv.font_montserrat_14, parent=page0)
set_flag(flag, value)

为对象设置标志。如果 value 为True,则添加标志;如果为False,则移除标志。

参数:
  • flag (int) – 要设置的标志。

  • value (bool) – 如果为True,则添加标志;如果为False,则移除标志。

返回:

None

UiFlow2 代码块:

set_flag.png

MicroPython 代码块:

roller_0.set_flag(lv.obj.FLAG.HIDDEN, True)
toggle_flag(flag)

切换对象的标志。如果标志已设置,则将其移除;如果未设置,则将其添加。

参数:

flag (int) – 要切换的标志。

返回:

None

UiFlow2 代码块:

toggle_flag.png

MicroPython 代码块:

roller_0.toggle_flag(lv.obj.FLAG.HIDDEN)
set_state(state, value)

设置滚轮的状态。如果 value 为True,则设置状态;如果为False,则取消设置状态。

参数:
  • state (int) – 要设置的状态。

  • value (bool) – 如果为True,则设置状态;如果为False,则取消设置状态。

返回:

None

UiFlow2 代码块:

set_state.png

MicroPython 代码块:

roller_0.set_state(lv.STATE.CHECKED, True)
toggle_state(state)

切换滚轮的状态。如果状态已设置,则取消设置;如果未设置,则将其设置。

参数:

state (int) – 要切换的状态。

返回:

None

UiFlow2 代码块:

toggle_state.png

MicroPython 代码块:

roller_0.toggle_state(lv.STATE.CHECKED)
event(callback, event, user_data=None)

为滚轮添加事件回调。当指定事件发生时将调用回调函数。

参数:
  • callback – 要调用的回调函数。

  • event (int) – 要监听的事件。

  • user_data – 传递给回调函数的可选用户数据。

返回:

None

UiFlow2 代码块:

event.png

MicroPython 代码块:

def roller_callback(event_obj):
    print("Roller value changed")

roller_0.event(roller_callback, lv.EVENT.VALUE_CHANGED)
set_bg_color(color, opa, part)

设置滚轮的背景颜色。

参数:
  • color (int) – 要设置的颜色。

  • opa (int) – 颜色的不透明度。

  • part (int) – 要应用样式的对象部分(例如:lv.PART.MAIN)。

返回:

None

UiFlow2 代码块:

set_bg_color.png

MicroPython 代码块:

roller_0.set_bg_color(lv.color_hex(0x000000), 255, lv.PART.MAIN | lv.STATE.DEFAULT)

roller_0.set_bg_color(lv.color_hex(0x000000), 255, lv.PART.SELECTED | lv.STATE.DEFAULT)
set_border_color(color, opa, part)

设置滚轮的边框颜色。

参数:
  • color (int) – 要设置的颜色。

  • opa (int) – 颜色的不透明度。值应在0(透明)到255(不透明)之间。

  • part (int) – 要应用样式的对象部分(例如:lv.PART.MAIN)。

返回:

None

UiFlow2 代码块:

set_border_color.png

MicroPython 代码块:

roller_0.set_border_color(lv.color_hex(0x2196F3), 255, lv.PART.MAIN | lv.STATE.DEFAULT)
roller_0.set_border_color(lv.color_hex(0x2196F3), 255, lv.PART.SELECTED | lv.STATE.DEFAULT)
set_style_border_width(width, part)

设置滚轮的边框宽度。

参数:
  • width (int) – 要设置的宽度。

  • part (int) – 要应用样式的对象部分(例如:lv.PART.MAIN)。

返回:

None

UiFlow2 代码块:

set_style_border_width.png

MicroPython 代码块:

roller_0.set_style_border_width(2, lv.PART.MAIN | lv.STATE.DEFAULT)
roller_0.set_style_border_width(2, lv.PART.SELECTED | lv.STATE.DEFAULT)
get_selected()

获取当前选中选项的索引。

返回:

选中选项的索引。

返回类型:

int

UiFlow2 代码块:

get_selected.png

MicroPython 代码块:

selected_index = roller_0.get_selected()
set_visible_row_count(count)

设置滚轮中可见行数。

参数:

count (int) – 可见行数。

返回:

None

UiFlow2 代码块:

set_visible_row_count.png

MicroPython 代码块:

roller_0.set_visible_row_count(3)
set_pos(x, y)

设置滚轮的位置。

参数:
  • x (int) – 滚轮的x坐标。

  • y (int) – 滚轮的y坐标。

返回:

None

UiFlow2 代码块:

set_pos.png

MicroPython 代码块:

roller_0.set_pos(100, 50)
set_x(x)

设置滚轮的x坐标。

参数:

x (int) – 滚轮的x坐标。

返回:

None

UiFlow2 代码块:

set_x.png

MicroPython 代码块:

roller_0.set_x(100)
set_y(y)

设置滚轮的y坐标。

参数:

y (int) – 滚轮的y坐标。

返回:

None

UiFlow2 代码块:

set_y.png

MicroPython 代码块:

roller_0.set_y(50)
align_to(obj, align, x_ofs=0, y_ofs=0)

将滚轮对齐到另一个对象。

参数:
  • obj (lv.obj) – 要对齐的对象。

  • align (int) – 对齐类型。

  • x_ofs (int) – 与对齐对象的x偏移量。

  • y_ofs (int) – 与对齐对象的y偏移量。

返回:

None

UiFlow2 代码块:

align_to.png

MicroPython 代码块:

roller_0.align_to(other_obj, lv.ALIGN.CENTER, 0, 0)
set_size(w, h)

设置滚轮的尺寸。

参数:
  • w (int) – 滚轮的宽度。

  • h (int) – 滚轮的高度。

返回:

None

UiFlow2 代码块:

set_size.png

MicroPython 代码块:

roller_0.set_size(150, 120)
set_width(w)

设置滚轮的宽度。

参数:

w (int) – 滚轮的宽度。

返回:

None

UiFlow2 代码块:

set_width.png

MicroPython 代码块:

roller_0.set_width(150)
get_width()

获取滚轮的宽度。

返回:

滚轮的宽度。

返回类型:

int

UiFlow2 代码块:

get_width.png

MicroPython 代码块:

width = roller_0.get_width()
set_height(h)

设置滚轮的高度。

参数:

h (int) – 滚轮的高度。

返回:

None

UiFlow2 代码块:

set_height.png

MicroPython 代码块:

roller_0.set_height(120)
get_height()

获取滚轮的高度。

返回:

滚轮的高度。

返回类型:

int

UiFlow2 代码块:

get_height.png

MicroPython 代码块:

height = roller_0.get_height()
set_options(options, mode=lvgl.roller.MODE.NORMAL)

设置滚轮的选项。

参数:
  • options (list) – 要在滚轮中显示的选项列表。

  • mode (lv.roller.MODE) – 滚轮模式(默认为NORMAL)。

UiFlow2 代码块:

set_options.png

MicroPython 代码块:

roller_0.set_options(["Option 1", "Option 2"], mode=lv.roller.MODE.NORMAL)
get_options()

获取下拉菜单中的选项列表。

返回:

选项列表。

返回类型:

list

UiFlow2 代码块:

get_options.png

MicroPython 代码块:

options = roller_0.get_options()
get_option_count()

获取滚轮中选项的总数。

返回:

选项的数量。

返回类型:

int

UiFlow2 代码块:

get_option_count.png

MicroPython 代码块:

option_count = roller_0.get_option_count()
get_selected_str()

获取当前选中选项的文本。

返回:

选中选项的文本。

返回类型:

str

UiFlow2 代码块:

get_selected_str.png

MicroPython 代码块:

selected_option = roller_0.get_selected_str()
set_style_radius(radius, part)

设置滑块组件的圆角半径。

参数:
  • radius (int) – 要设置的半径。

  • part (int) – 要应用样式的对象部分(例如,lv.PART.MAIN、lv.PART.SELECTED)。

返回:

None

返回类型:

None

UiFlow2 代码块:

set_style_radius.png

MicroPython 代码块:

roller_0.set_style_radius(10, lv.PART.MAIN | lv.STATE.DEFAULT)
roller_0.set_style_radius(10, lv.PART.SELECTED | lv.STATE.DEFAULT)