M5Arc
M5Arc 是一个可在用户界面中创建弧形元素的小部件,可用于显示环形进度或其他环状指示器。
UiFlow2 示例
事件弧
在 UiFlow2 中打开 cores3_arc_event_example.m5f2 项目。
该示例创建一个弧形控件,当数值变化时触发事件。
UiFlow2 代码块:
示例输出:
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 代码块:

MicroPython 代码块:
arc_0.set_rotation(90)
- set_value(value)
设置弧形的数值。
- 参数:
value (int) – 弧形的数值。
UiFlow2 代码块:

MicroPython 代码块:
arc_0.set_value(90)
- set_range()
设置弧形的取值范围。
UiFlow2 代码块:

MicroPython 代码块:
arc_0.set_range(0, 100)
- set_mode()
设置弧形的模式。
- 参数:
mode (int) – 弧形的模式。选项:- lv.arc.MODE.NORMAL:正常模式;- lv.arc.MODE.REVERSE:反向模式;- lv.arc.MODE.SYMMETRICAL:对称模式。
UiFlow2 代码块:

MicroPython 代码块:
arc_0.set_mode(lv.ARC.MODE.NORMAL)
- set_flag(flag, value)
为对象设置标志。若
value为 True 则添加标志,为 False 则移除标志。UiFlow2 代码块:

MicroPython 代码块:
button_0.set_flag(lv.obj.FLAG.HIDDEN, True)
- set_pos(x, y)
设置弧形的位置。
UiFlow2 代码块:

MicroPython 代码块:
arc_0.set_pos(100, 100)
- set_size(width, height)
设置弧形的尺寸。
UiFlow2 代码块:

MicroPython 代码块:
arc_0.set_size(100, 50)
- align_to(obj, align, x, y)
将弧形对齐到另一个对象。
UiFlow2 代码块:

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 代码块:

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)




