M5Bar

M5Bar 是一个可用于在用户界面中创建进度条的小部件。它使用可视的进度条指示器显示指定范围内的值。进度条可以自定义颜色和渐变,并可选择将当前值显示为文本。

UiFlow2 应用示例

温度计

在 UiFlow2 中打开 cores3_temperature_meter_example.m5f2 项目。

此示例演示如何创建显示当前温度的温度计。

UiFlow2 代码块:

cores3_temperature_meter_example.png

示例输出:

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
10from hardware import I2C
11from hardware import Pin
12from unit import ENVPROUnit
13import time
14
15
16page0 = None
17bar0 = None
18label0 = None
19i2c0 = None
20envpro_0 = None
21
22
23def setup():
24    global page0, bar0, label0, i2c0, envpro_0
25
26    M5.begin()
27    Widgets.setRotation(1)
28    m5ui.init()
29    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
30    bar0 = m5ui.M5Bar(
31        x=148,
32        y=21,
33        w=20,
34        h=200,
35        min_value=0,
36        max_value=50,
37        value=25,
38        bg_c=0x2193F3,
39        color=0x2193F3,
40        parent=page0,
41    )
42    label0 = m5ui.M5Label(
43        "label0",
44        x=181,
45        y=112,
46        text_c=0x000000,
47        bg_c=0xFFFFFF,
48        bg_opa=0,
49        font=lv.font_montserrat_14,
50        parent=page0,
51    )
52
53    i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
54    envpro_0 = ENVPROUnit(i2c0)
55    page0.screen_load()
56    bar0.set_bg_grad_color(
57        0xFF0000, 255, 0x0000FF, 255, lv.GRAD_DIR.VER, lv.PART.INDICATOR | lv.STATE.DEFAULT
58    )
59
60
61def loop():
62    global page0, bar0, label0, i2c0, envpro_0
63    M5.update()
64    bar0.set_value(int(envpro_0.get_temperature()), True)
65    label0.set_text(str(envpro_0.get_temperature()))
66    time.sleep(1)
67
68
69if __name__ == "__main__":
70    try:
71        setup()
72        while True:
73            loop()
74    except (Exception, KeyboardInterrupt) as e:
75        try:
76            m5ui.deinit()
77            from utility import print_error_msg
78
79            print_error_msg(e)
80        except ImportError:
81            print("please update to latest firmware")

示例输出:

API参考

M5Bar

class m5ui.bar.M5Bar(*args, **kwargs)

基类:bar

初始化一个新的 M5Bar 控件。

参数:
  • x (int) – 进度条的 x 坐标。

  • y (int) – 进度条的 y 坐标。

  • w (int) – 进度条的宽度。

  • h (int) – 进度条的高度。

  • min_value (int) – 进度条的最小值。

  • max_value (int) – 进度条的最大值。

  • value (int) – 进度条的初始值。

  • is_show_value (bool) – 是否显示当前值为文本。

  • bg_c (int) – 进度条的背景颜色。

  • color (int) – 进度条的指示颜色。

  • parent (lv.obj) – 父对象。如果为 None,则使用当前活动屏幕。

返回:

UiFlow2 代码块:

MicroPython 代码块:

bar = M5Bar(x=50, y=50, w=200, h=30, min_value=0, max_value=100, value=50)
get_value()

获取进度条的当前值。

返回:

进度条的当前值。

返回类型:

int

UiFlow2 代码块:

get_value.png

MicroPython 代码块:

current_value = bar.get_value()
get_min_value()

获取进度条范围的最小值。

返回:

最小值。

返回类型:

int

UiFlow2 代码块:

get_min_value.png

MicroPython 代码块:

min_val = bar.get_min_value()
get_max_value()

获取进度条范围的最大值。

返回:

最大值。

返回类型:

int

UiFlow2 代码块:

get_max_value.png

MicroPython 代码块:

max_val = bar.get_max_value()
set_flag(flag, value)

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

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

  • value (bool) – 为 True 时添加标志,为 False 时移除标志。

返回:

UiFlow2 代码块:

set_flag.png

MicroPython 代码块:

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

切换对象上的标志。如果设置了标志,则移除该标志;如果未设置,则添加该标志。

参数:

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

返回:

UiFlow2 代码块:

toggle_flag.png

MicroPython 代码块:

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

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

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

  • value (bool) – 为 True 时设置状态,为 False 时取消状态。

返回:

UiFlow2 代码块:

set_state.png

MicroPython 代码块:

bar.set_state(lv.STATE.PRESSED, True)
toggle_state(state)

切换栏的状态。如果状态已设置,则取消设置;如果未设置,则设置状态。

参数:

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

返回:

UiFlow2 代码块:

toggle_state.png

MicroPython 代码块:

bar.toggle_state(lv.STATE.PRESSED)
set_bg_color(color, opa, part)

设置进度条的背景颜色。

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

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

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

返回:

UiFlow2 代码块:

set_bg_color.png

set_indicator_color.png

MicroPython 代码块:

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

bar.set_bg_color(lv.color_hex(0x000000), 255, lv.PART.INDICATOR | lv.STATE.DEFAULT)
set_bg_grad_color(color, opa, grad_color, grad_opd, grad_dir, part)

设置条形的背景渐变颜色。

参数:
  • color (int) – 渐变起始颜色,可为整数(RGB)。

  • opa (int) – 起始颜色的不透明度(0-255)。

  • grad_color (int) – 渐变结束颜色,可为整数(RGB)。

  • grad_opd (int) – 结束颜色的不透明度(0-255)。

  • grad_dir (int) – 渐变方向(如 lv.GRAD_DIR.VER)。

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

返回:

UiFlow2 代码块:

set_bg_grad_color.png

set_indicator_grad_color.png

MicroPython 代码块:

bar.set_bg_grad_color(0x00FF00, 255, 0xFF0000, 255, lv.GRAD_DIR.HOR, lv.PART.MAIN | lv.STATE.DEFAULT)
bar.set_bg_grad_color(0x00FF00, 255, 0xFF0000, 255, lv.GRAD_DIR.HOR, lv.PART.INDICATOR | lv.STATE.DEFAULT)
set_pos(x, y)

设置进度条的位置。

参数:
  • x (int) – 进度条的 x 坐标。

  • y (int) – 进度条的 y 坐标。

返回:

UiFlow2 代码块:

set_pos.png

MicroPython 代码块:

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

设置进度条的 x 坐标。

参数:

x (int) – 进度条的 x 坐标。

返回:

UiFlow2 代码块:

set_x.png

MicroPython 代码块:

bar.set_x(100)
set_y(y)

设置进度条的 y 坐标。

参数:

y (int) – 进度条的 y 坐标。

返回:

UiFlow2 代码块:

set_y.png

MicroPython 代码块:

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

设置进度条的尺寸。

参数:
  • width (int) – 进度条的宽度。

  • height (int) – 进度条的高度。

返回:

UiFlow2 代码块:

set_size.png

MicroPython 代码块:

bar.set_size(200, 30)
set_width(width)

设置进度条的宽度。

参数:

width (int) – 进度条的宽度。

返回:

UiFlow2 代码块:

set_width.png

MicroPython 代码块:

bar.set_width(200)
get_width()

获取进度条的宽度。

返回:

进度条的宽度。

返回类型:

int

UiFlow2 代码块:

get_width.png

MicroPython 代码块:

width = bar.get_width()
set_height(height)

设置进度条的高度。

参数:

height (int) – 进度条的高度。

返回:

UiFlow2 代码块:

set_height.png

MicroPython 代码块:

bar.set_height(30)
get_height()

获取进度条的高度。

返回:

进度条的高度。

返回类型:

int

UiFlow2 代码块:

get_height.png

MicroPython 代码块:

height = bar.get_height()
align_to(obj, align, x, y)

将进度条对齐到另一个对象。

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

  • align (int) – 对齐类型。

  • x (int) – 相对于对齐对象的 x 偏移量。

  • y (int) – 相对于对齐对象的 y 偏移量。

返回:

UiFlow2 代码块:

align_to.png

MicroPython 代码块:

bar.align_to(page_0, lv.ALIGN.CENTER, 0, 0)
set_value(value, anim=False)

设置进度条的当前值。

参数:
  • value (int) – 要设置的值。

  • anim_enable (bool) – 更改值时是否启用动画。

  • anim (bool)

返回:

返回类型:

None

UiFlow2 代码块:

set_value.png

MicroPython 代码块:

bar.set_value(75, True)
set_range(min_value, max_value)

设置进度条的取值范围。

参数:
  • min_value (int) – 最小值。

  • max_value (int) – 最大值。

返回:

返回类型:

None

UiFlow2 代码块:

set_range.png

MicroPython 代码块:

bar.set_range(0, 200)