M5Scale
M5Scale 是一个可在用户界面中创建刻度的控件。它可显示线性或圆形刻度,并支持配置范围、刻度数量、位置、标签以及分段(Sections)等自定义样式。
UiFlow2 示例
刻度示例
在 UiFlow2 中打开 scale_core2_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 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 则移除。UiFlow2 代码块:

MicroPython 代码块:
scale_0.set_flag(lv.obj.FLAG.HIDDEN, True)
- set_range(start_pos, end_pos)
设置刻度的范围。
UiFlow2 代码块:

MicroPython 代码块:
scale_0.set_range(0, 100)
- set_major_tick_every(tick_every)
设置刻度主刻度的间隔。
- 参数:
tick_every (int) – 主刻度间隔值。
UiFlow2 代码块:

MicroPython 代码块:
scale_0.set_major_tick_every(10)
- set_total_tick_count(tick_count)
设置刻度的总刻度数。
- 参数:
tick_count (int) – 刻度的总刻度数。
UiFlow2 代码块:

MicroPython 代码块:
scale_0.set_total_tick_count(11)
- set_label_show(label_show)
设置刻度标签的可见性。
- 参数:
label_show (bool) – 若为 True 显示标签;若为 False 隐藏标签。
UiFlow2 代码块:

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

MicroPython 代码块:
scale_0.set_mode(lv.SCALE.MODE.HORIZONTAL_TOP)
- set_text_src(text_src)
设置刻度标签文本的来源。
- 参数:
text_src (list) – 标签文本来源。
UiFlow2 代码块:

MicroPython 代码块:
scale_0.set_text_src(["0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100", None])
- set_line_color(color, opa, part)
设置线条颜色。
UiFlow2 代码块:

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)
设置刻度线宽度。
UiFlow2 代码块:

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)
设置文本颜色。
UiFlow2 代码块:

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

MicroPython 代码块:
scale_0.set_style_text_font(lv.font_montserrat_14, lv.PART.INDICATOR)
- set_pos(x, y)
设置刻度的位置。
UiFlow2 代码块:

MicroPython 代码块:
scale_0.set_pos(100, 100)
- set_size(width, height)
设置刻度尺寸。
MicroPython 代码块:
scale_0.set_size(100, 50)



