M5Arc

M5Arc 是一个可在用户界面中创建弧形元素的小部件,可用于显示环形进度或其他环状指示器。

UiFlow2 示例

事件弧

在 UiFlow2 中打开 cores3_arc_event_example.m5f2 项目。

该示例创建一个弧形控件,当数值变化时触发事件。

UiFlow2 代码块:

cores3_arc_event_example.png

示例输出:

None

MicroPython 示例

事件弧

该示例创建一个弧形控件,当数值变化时触发事件。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8import m5ui
 9import lvgl as lv
10
11
12page0 = None
13switch0 = None
14
15
16def switch0_checked_event(event_struct):
17    global page0, switch0
18
19    print("switch0 checked")
20
21
22def switch0_unchecked_event(event_struct):
23    global page0, switch0
24
25    print("switch0 unchecked")
26
27
28def switch0_event_handler(event_struct):
29    global page0, switch0
30    event = event_struct.code
31    obj = event_struct.get_target_obj()
32    if event == lv.EVENT.VALUE_CHANGED:
33        if obj.has_state(lv.STATE.CHECKED):
34            switch0_checked_event(event_struct)
35        else:
36            switch0_unchecked_event(event_struct)
37    return
38
39
40def setup():
41    global page0, switch0
42
43    M5.begin()
44    Widgets.setRotation(1)
45    m5ui.init()
46    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
47    switch0 = m5ui.M5Switch(
48        x=128,
49        y=91,
50        w=60,
51        h=30,
52        bg_c=0xE7E3E7,
53        bg_c_checked=0x2196F3,
54        circle_c=0xFFFFFF,
55        parent=page0,
56    )
57
58    switch0.add_event_cb(switch0_event_handler, lv.EVENT.ALL, None)
59
60    page0.screen_load()
61    switch0.set_bg_color(0x666666, 255, lv.PART.MAIN | lv.STATE.DEFAULT)
62    switch0.set_bg_color(0x33FF33, 255, lv.PART.INDICATOR | lv.STATE.CHECKED)
63
64
65def loop():
66    global page0, switch0
67    M5.update()
68
69
70if __name__ == "__main__":
71    try:
72        setup()
73        while True:
74            loop()
75    except (Exception, KeyboardInterrupt) as e:
76        try:
77            m5ui.deinit()
78            from utility import print_error_msg
79
80            print_error_msg(e)
81        except ImportError:
82            print("please update to latest firmware")

示例输出:

None

API参考

M5Arc

class m5ui.arc.M5Arc(*args, **kwargs)

基类:arc

创建一个弧形对象。

参数:
  • x (int) – 弧形的 x 位置。

  • y (int) – 弧形的 y 位置。

  • w (int) – 弧形的宽度。

  • h (int) – 弧形的高度。

  • value (int) – 弧形的初始值。

  • min_value (int) – 弧形的最小值。

  • max_value (int) – 弧形的最大值。

  • rotation (int) – 弧形的旋转角度(度)。

  • bg_c (int) – 弧形处于关闭状态时的十六进制颜色值。

  • bg_c_indicator (int) – 弧形处于开启状态时的十六进制颜色值。

  • bg_c_knob (int) – 弧形旋钮的十六进制颜色值。

  • parent (lv.obj) – 弧形要附加到的父对象;若未指定,则附加到默认屏幕。

UiFlow2 代码块:

None

MicroPython 代码块:

from m5ui import M5Arc
import lvgl as lv

m5ui.init()
arc_0 = M5Arc(
    x=0,
    y=0,
    w=100,
    h=100,
    value=10,
    min_value=0,
    max_value=100,
    rotation=0,
    mode=lv.arc.MODE.REVERSE,
    bg_c=0xE7E3E7,
    bg_c_indicator=0x0288FB,
    bg_c_knob=0xE7E3E7,
    parent=page0,
)
set_rotation(rotation)

设置弧形的旋转角度。

参数:

rotation (int) – 弧形的旋转角度(度)。

UiFlow2 代码块:

set_rotation.png

MicroPython 代码块:

arc_0.set_rotation(90)
set_value(value)

设置弧形的数值。

参数:

value (int) – 弧形的数值。

UiFlow2 代码块:

set_value.png

MicroPython 代码块:

arc_0.set_value(90)
get_value()

获取弧形的数值。

返回:

弧形的数值。

返回类型:

int

UiFlow2 代码块:

get_value.png

MicroPython 代码块:

arc_0.get_value()
set_range()

设置弧形的取值范围。

参数:
  • min (int) – 弧形的最小值。

  • max (int) – 弧形的最大值。

UiFlow2 代码块:

set_range.png

MicroPython 代码块:

arc_0.set_range(0, 100)
set_mode()

设置弧形的模式。

参数:

mode (int) – 弧形的模式。选项:- lv.arc.MODE.NORMAL:正常模式;- lv.arc.MODE.REVERSE:反向模式;- lv.arc.MODE.SYMMETRICAL:对称模式。

UiFlow2 代码块:

set_mode.png

MicroPython 代码块:

arc_0.set_mode(lv.ARC.MODE.NORMAL)
set_flag(flag, value)

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

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

  • value (bool) – True 表示添加该标志,False 表示移除该标志。

返回:

None

UiFlow2 代码块:

set_flag.png

MicroPython 代码块:

button_0.set_flag(lv.obj.FLAG.HIDDEN, True)
set_pos(x, y)

设置弧形的位置。

参数:
  • x (int) – 弧形的 x 坐标。

  • y (int) – 弧形的 y 坐标。

UiFlow2 代码块:

set_pos.png

MicroPython 代码块:

arc_0.set_pos(100, 100)
set_x(x)

设置弧形的 x 坐标。

参数:

x (int) – 弧形的 x 坐标。

UiFlow2 代码块:

set_x.png

MicroPython 代码块:

arc_0.set_x(100)
set_y(y)

设置弧形的 y 坐标。

参数:

y (int) – 弧形的 y 坐标。

UiFlow2 代码块:

set_y.png

MicroPython 代码块:

arc_0.set_y(100)
set_size(width, height)

设置弧形的尺寸。

参数:
  • width (int) – 弧形的宽度。

  • height (int) – 弧形的高度。

UiFlow2 代码块:

set_size.png

MicroPython 代码块:

arc_0.set_size(100, 50)
align_to(obj, align, x, y)

将弧形对齐到另一个对象。

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

  • align (int) – 对齐方式。

  • x (int) – 相对于目标对象的 x 偏移。

  • y (int) – 相对于目标对象的 y 偏移。

UiFlow2 代码块:

align_to.png

MicroPython 代码块:

arc_0.align_to(page_0, lv.ALIGN.CENTER, 0, 0)
add_event_cb(handler, event, user_data)

为弧形添加事件回调;当指定事件发生时会调用该回调。

参数:
  • handler (function) – 要调用的回调函数。

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

  • user_data (Any) – 可选的用户数据,会传递给回调。

UiFlow2 代码块:

event.png

MicroPython 代码块:

def value_changed_event(event_struct):
    global page0, arc_0
    print("value changed:", arc_0.get_value())

arc_0.add_event_cb(value_changed_event, lv.EVENT.VALUE_CHANGED, None)
set_arc_color(color, opa, part)

设置弧形的颜色。

参数:
  • color (int) – 弧形的十六进制颜色值。

  • opa (int) – 不透明度级别(0-255)。

  • part (int) – 要应用样式的弧形部件(例如 lv.PART.MAIN | lv.STATE.DEFAULT)。

UiFlow2 代码块:

set_bg_color.png set_indicator_color.png set_knob_color.png

MicroPython 代码块:

label_0.set_arc_color(0x2196F3, lv.PART.MAIN | lv.STATE.DEFAULT)