M5Scale

M5Scale 是一个可在用户界面中创建刻度的控件。它可显示线性或圆形刻度,并支持配置范围、刻度数量、位置、标签以及分段(Sections)等自定义样式。

UiFlow2 示例

刻度示例

在 UiFlow2 中打开 scale_core2_example.m5f2 项目。

本示例演示如何创建具有数值范围和自定义样式的刻度控件。

UiFlow2 代码块:

scale_core2_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
13scale0 = None
14
15
16def setup():
17    global page0, scale0
18
19    M5.begin()
20    Widgets.setRotation(1)
21    m5ui.init()
22    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
23    scale0 = m5ui.M5Scale(
24        x=7,
25        y=92,
26        w=300,
27        h=0,
28        start_pos=0,
29        end_pos=100,
30        tick_count=11,
31        tick_every=2,
32        show_mode=lv.scale.MODE.HORIZONTAL_TOP,
33        parent=page0,
34    )
35
36    page0.screen_load()
37    scale0.set_style_line_width(2, lv.PART.MAIN)
38    scale0.set_line_color(0x6600CC, 255, lv.PART.MAIN)
39    scale0.set_style_line_width(4, lv.PART.INDICATOR)
40    scale0.set_line_color(0xFF9900, 255, lv.PART.INDICATOR)
41    scale0.set_style_line_width(6, lv.PART.ITEMS)
42    scale0.set_line_color(0x66FF99, 255, lv.PART.ITEMS)
43
44
45def loop():
46    global page0, scale0
47    M5.update()
48
49
50if __name__ == "__main__":
51    try:
52        setup()
53        while True:
54            loop()
55    except (Exception, KeyboardInterrupt) as e:
56        try:
57            m5ui.deinit()
58            from utility import print_error_msg
59
60            print_error_msg(e)
61        except ImportError:
62            print("please update to latest firmware")

示例输出:

None

API参考

M5Scale

class m5ui.scale.M5Scale(*args, **kwargs)

基类:scale

创建一个刻度对象。

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

  • y (int) – 刻度的 y 坐标。

  • w (int) – 刻度的宽度,若未指定则根据模式自动设置。

  • h (int) – 刻度的高度,若未指定则根据模式自动设置。

  • start_pos (int) – 刻度的起始位置。

  • end_pos (int) – 刻度的结束位置。

  • tick_count (int) – 刻度上的总刻度数。

  • tick_every (int) – 主刻度之间的间隔。

  • mode (int) – 刻度的模式。可以是以下选项之一:选项:- lv.scale.MODE.HORIZONTAL_TOP:水平顶部刻度。- lv.scale.MODE.HORIZONTAL_BOTTOM:水平底部刻度。- lv.scale.MODE.VERTICAL_LEFT:垂直左侧刻度。- lv.scale.MODE.VERTICAL_RIGHT:垂直右侧刻度。- lv.scale.MODE.ROUND_INNER:圆形内侧刻度。- lv.scale.MODE.ROUND_OUTER:圆形外侧刻度。

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

MicroPython 代码块:

from m5ui import M5Scale
import lvgl as lv

m5ui.init()
scale_0 = M5Scale(x=10, y=10, w=200, h=20, start_pos=0, end_pos=100, tick_count=11, tick_every=2, mode=lv.scale.MODE.HORIZONTAL_TOP, parent=page0)
set_flag(flag, value)

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

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

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

UiFlow2 代码块:

set_flag.png

MicroPython 代码块:

scale_0.set_flag(lv.obj.FLAG.HIDDEN, True)
set_range(start_pos, end_pos)

设置刻度的范围。

参数:
  • start_pos (int) – 刻度的起始位置。

  • end_pos (int) – 刻度的结束位置。

UiFlow2 代码块:

set_range.png

MicroPython 代码块:

scale_0.set_range(0, 100)
set_major_tick_every(tick_every)

设置刻度主刻度的间隔。

参数:

tick_every (int) – 主刻度间隔值。

UiFlow2 代码块:

set_major_tick_every.png

MicroPython 代码块:

scale_0.set_major_tick_every(10)
set_total_tick_count(tick_count)

设置刻度的总刻度数。

参数:

tick_count (int) – 刻度的总刻度数。

UiFlow2 代码块:

set_total_tick_count.png

MicroPython 代码块:

scale_0.set_total_tick_count(11)
set_label_show(label_show)

设置刻度标签的可见性。

参数:

label_show (bool) – 若为 True 显示标签;若为 False 隐藏标签。

UiFlow2 代码块:

set_label_show.png

MicroPython 代码块:

scale_0.set_label_show(True)
set_mode(show_mode)

设置刻度的显示模式。

参数:

show_mode (int) – 显示模式。可选: - lv.scale.MODE.HORIZONTAL_TOP:水平顶部刻度。 - lv.scale.MODE.HORIZONTAL_BOTTOM:水平底部刻度。 - lv.scale.MODE.VERTICAL_LEFT:垂直左侧刻度。 - lv.scale.MODE.VERTICAL_RIGHT:垂直右侧刻度。 - lv.scale.MODE.ROUND_INNER:圆形内侧刻度。 - lv.scale.MODE.ROUND_OUTER:圆形外侧刻度。

UiFlow2 代码块:

set_mode.png

MicroPython 代码块:

scale_0.set_mode(lv.SCALE.MODE.HORIZONTAL_TOP)
set_text_src(text_src)

设置刻度标签文本的来源。

参数:

text_src (list) – 标签文本来源。

UiFlow2 代码块:

set_text_src.png

MicroPython 代码块:

scale_0.set_text_src(["0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100", None])
set_line_color(color, opa, part)

设置线条颜色。

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

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

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

UiFlow2 代码块:

set_line_color.png

MicroPython 代码块:

scale_0.set_line_color(0xFF0000, 255, lv.PART.MAIN)
scale_0.set_line_color(0x00FF00, 255, lv.PART.ITEMS)
scale_0.set_line_color(0x0000FF, 255, lv.PART.INDICATOR)
set_style_line_width(width, part)

设置刻度线宽度。

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

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

UiFlow2 代码块:

set_style_line_width.png

MicroPython 代码块:

scale_0.set_style_line_width(2, lv.PART.MAIN)
scale_0.set_style_line_width(2, lv.PART.ITEMS)
scale_0.set_style_line_width(2, lv.PART.INDICATOR)
set_text_color(color, opa, part)

设置文本颜色。

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

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

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

UiFlow2 代码块:

set_text_color.png

MicroPython 代码块:

scale_0.set_text_color(0xFF0000, 255, lv.PART.INDICATOR)
set_style_text_font(font, part)

设置刻度标签文本字体。

参数:
  • font (lv.lv_font_t) – 要设置的字体。

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

UiFlow2 代码块:

set_style_text_font.png

MicroPython 代码块:

scale_0.set_style_text_font(lv.font_montserrat_14, lv.PART.INDICATOR)
set_pos(x, y)

设置刻度的位置。

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

  • y (int) – 刻度的 y 坐标。

UiFlow2 代码块:

set_pos.png

MicroPython 代码块:

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

设置刻度的 x 坐标。

参数:

x (int) – 刻度的 x 坐标。

UiFlow2 代码块:

set_x.png

MicroPython 代码块:

scale_0.set_x(100)
set_y(y)

设置刻度的 y 坐标。

参数:

y (int) – 刻度的 y 坐标。

UiFlow2 代码块:

set_y.png

MicroPython 代码块:

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

设置刻度尺寸。

参数:
  • width (int) – 刻度宽度。

  • height (int) – 刻度高度。

MicroPython 代码块:

scale_0.set_size(100, 50)
set_width(width)

设置刻度宽度。

参数:

width (int) – 刻度宽度。

MicroPython 代码块:

scale_0.set_width(100)
set_height(height)

设置刻度高度。

参数:

height (int) – 刻度高度。

MicroPython 代码块:

scale_0.set_height(50)
align_to(obj, align, x, y)

将刻度对齐到另一个对象。

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

  • align (int) – 对齐类型。

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

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

UiFlow2 代码块:

align_to.png

MicroPython 代码块:

scale_0.align_to(page_0, lv.ALIGN.CENTER, 0, 0)