M5Spinbox
M5Spinbox是一个提供数字输入界面的控件,具有递增和递减按钮。它显示一个数字值,可以通过单击+和-按钮或直接输入来调整。数字输入框支持整数和浮点数,具有可自定义的数字位数和小数精度。
UiFlow2 应用示例
基础数字输入框
在UiFlow2中打开 cores3_spinbox_basic_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 13spinbox0 = None 14label0 = None 15 16 17def spinbox0_value_changed_event(event_struct): 18 global page0, spinbox0, label0 19 label0.set_text(str(spinbox0.get_value())) 20 21 22def spinbox0_event_handler(event_struct): 23 global page0, spinbox0, label0 24 event = event_struct.code 25 if event == lv.EVENT.VALUE_CHANGED and True: 26 spinbox0_value_changed_event(event_struct) 27 return 28 29 30def setup(): 31 global page0, spinbox0, label0 32 33 M5.begin() 34 Widgets.setRotation(1) 35 m5ui.init() 36 page0 = m5ui.M5Page(bg_c=0xFFFFFF) 37 spinbox0 = m5ui.M5Spinbox( 38 x=60, 39 y=100, 40 w=200, 41 h=40, 42 value=50, 43 min_value=0, 44 max_value=100, 45 digit_count=5, 46 prec=2, 47 font=lv.font_montserrat_14, 48 parent=page0, 49 ) 50 label0 = m5ui.M5Label( 51 "label0", 52 x=138, 53 y=166, 54 text_c=0x000000, 55 bg_c=0xFFFFFF, 56 bg_opa=0, 57 font=lv.font_montserrat_14, 58 parent=page0, 59 ) 60 61 spinbox0.add_event_cb(spinbox0_event_handler, lv.EVENT.ALL, None) 62 63 page0.screen_load() 64 spinbox0.set_border_color(0xFF0000, 255, lv.PART.MAIN | lv.STATE.DEFAULT) 65 66 67def loop(): 68 global page0, spinbox0, label0 69 M5.update() 70 71 72if __name__ == "__main__": 73 try: 74 setup() 75 while True: 76 loop() 77 except (Exception, KeyboardInterrupt) as e: 78 try: 79 m5ui.deinit() 80 from utility import print_error_msg 81 82 print_error_msg(e) 83 except ImportError: 84 print("please update to latest firmware")
示例输出:
None
API参考
M5Spinbox
- class m5ui.spinbox.M5Spinbox(*args, **kwargs)
基类:
obj创建一个数字输入框控件。
- 参数:
- set_flag(flag, value)
在对象上设置标志。如果
value为True,则添加标志;如果为False,则移除标志。UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_flag(lv.obj.FLAG.HIDDEN, True)
- toggle_flag(flag)
切换对象上的标志。如果标志已设置,则将其移除;如果未设置,则将其添加。
- 参数:
flag (int) – 要切换的标志。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.toggle_flag(lv.obj.FLAG.HIDDEN)
- set_pos(x, y)
设置数字输入框的位置。
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_pos(100, 200)
- set_x(x)
设置数字输入框的x坐标。
- 参数:
x (int) – 数字输入框的x坐标。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_x(150)
- set_y(y)
设置数字输入框的y坐标。
- 参数:
y (int) – 数字输入框的y坐标。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_y(250)
- get_width()
获取数字输入框的宽度。
- 返回:
数字输入框的宽度。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
width = spinbox_0.get_width()
- get_height()
获取数字输入框的高度。
- 返回:
数字输入框的高度。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
height = spinbox_0.get_height()
- align_to(obj, align, x, y)
将数字输入框对齐到另一个对象。
- 参数:
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.align_to(label_0, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
- set_state(state, value)
设置数字输入框的状态。如果
value为True,则设置状态;如果为False,则取消设置状态。UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_state(lv.STATE.DISABLED, True)
- toggle_state(state)
切换数字输入框的状态。如果状态已设置,则取消设置;如果未设置,则将其设置。
- 参数:
state (int) – 要切换的状态。
- 返回:
None
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.toggle_state(lv.STATE.CHECKED)
- set_size(width, height)
设置数字输入框的尺寸。
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_size(150, 40)
- set_width(width)
设置数字输入框的宽度。
- 参数:
width (int) – 数字输入框的宽度。
- 返回:
None
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_width(180)
- set_height(height)
设置数字输入框的高度。
- 参数:
height (int) – 数字输入框的高度。
- 返回:
None
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox_0.set_height(50)
- add_event_cb(event_cb, filters, user_data)
为数字输入框添加事件回调。
- 参数:
handler (function) – 要调用的回调函数。
event (int) – 要监听的事件。
user_data (Any) – 传递给回调的可选用户数据。
UiFlow2 代码块:

MicroPython 代码块:
def spinbox0_value_changed_event(event_struct): global page0, spinbox0 print("value changed:", spinbox0.get_value()) def spinbox0_event_handler(event_struct): global page0, spinbox0 event = event_struct.code if event == lv.EVENT.VALUE_CHANGED and True: spinbox0_value_changed_event(event_struct) return spinbox_0.add_event_cb(spinbox0_event_handler, lv.EVENT.ALL, None)
- set_bg_color(color, opa, part)
为对象的指定部分设置背景颜色和透明度。
- 参数:
- 返回:
None
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox0.set_bg_color(0xFF0000, 255, lv.PART.MAIN | lv.STATE.DEFAULT)
- set_border_color(color, opa, part)
为对象的指定部分设置边框颜色和透明度。
- 参数:
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
spinbox0.set_border_color(0xFF0000, 255, lv.PART.MAIN | lv.STATE.DEFAULT)
- set_style_border_width(w, part)
设置数字输入框的边框宽度。
UiFlow2 代码块:

MicroPython 代码块:
spinbox0.set_style_border_width(10, lv.PART.MAIN | lv.STATE.DEFAULT)
- set_style_radius(radius, part)
设置数字输入框的圆角半径。
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_style_radius(10, lv.PART.MAIN | lv.STATE.DEFAULT)
- set_range(min_value, max_value)
设置数字输入框的取值范围。
UiFlow2 代码块:

MicroPython 代码块:
spinbox0.set_range(0, 100)
- set_value(value)
设置数字输入框的值。
UiFlow2 代码块:

MicroPython 代码块:
spinbox0.set_value(50)
- get_value()
获取数字输入框的当前值。
UiFlow2 代码块:

MicroPython 代码块:
spinbox0.get_value()

