M5Checkbox

M5Checkbox是一个可以在用户界面中创建复选框的控件。它可以用来允许用户通过可视化指示器选择或取消选择选项。

UiFlow2 应用示例

基础复选框

在UiFlow2中打开|cores3_checkbox_basic_example.m5f2|项目。

此示例创建一个可以选中和取消选中的基础复选框。

UiFlow2 代码块:

cores3_checkbox_basic_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
 13checkbox0 = None
 14checkbox1 = None
 15label0 = None
 16
 17
 18def checkbox0_checked_event(event_struct):
 19    global page0, checkbox0, checkbox1, label0
 20    label0.set_text(str("checked"))
 21
 22
 23def checkbox0_unchecked_event(event_struct):
 24    global page0, checkbox0, checkbox1, label0
 25    label0.set_text(str("unchecked"))
 26
 27
 28def checkbox0_event_handler(event_struct):
 29    global page0, checkbox0, checkbox1, label0
 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            checkbox0_checked_event(event_struct)
 35        else:
 36            checkbox0_unchecked_event(event_struct)
 37    return
 38
 39
 40def setup():
 41    global page0, checkbox0, checkbox1, label0
 42
 43    M5.begin()
 44    Widgets.setRotation(1)
 45    m5ui.init()
 46    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
 47    checkbox0 = m5ui.M5Checkbox(
 48        title="checkbox0",
 49        value=False,
 50        x=77,
 51        y=106,
 52        title_c=0x212121,
 53        title_font=lv.font_montserrat_24,
 54        bullet_border_c=0x2193F3,
 55        bullet_bg_c=0xFFFFFF,
 56        parent=page0,
 57    )
 58    checkbox1 = m5ui.M5Checkbox(
 59        title="checkbox1",
 60        value=False,
 61        x=80,
 62        y=54,
 63        title_c=0x212121,
 64        title_font=lv.font_montserrat_24,
 65        bullet_border_c=0x2193F3,
 66        bullet_bg_c=0xFFFFFF,
 67        parent=page0,
 68    )
 69    label0 = m5ui.M5Label(
 70        "label0",
 71        x=124,
 72        y=153,
 73        text_c=0x000000,
 74        bg_c=0xFFFFFF,
 75        bg_opa=0,
 76        font=lv.font_montserrat_24,
 77        parent=page0,
 78    )
 79
 80    checkbox0.add_event_cb(checkbox0_event_handler, lv.EVENT.ALL, None)
 81
 82    page0.screen_load()
 83    checkbox1.set_state(lv.STATE.DISABLED, True)
 84    checkbox1.set_state(lv.STATE.CHECKED, True)
 85
 86
 87def loop():
 88    global page0, checkbox0, checkbox1, label0
 89    M5.update()
 90
 91
 92if __name__ == "__main__":
 93    try:
 94        setup()
 95        while True:
 96            loop()
 97    except (Exception, KeyboardInterrupt) as e:
 98        try:
 99            m5ui.deinit()
100            from utility import print_error_msg
101
102            print_error_msg(e)
103        except ImportError:
104            print("please update to latest firmware")

示例输出:

None

API参考

M5Checkbox

class m5ui.checkbox.M5Checkbox(*args, **kwargs)

基类:checkbox

创建一个复选框对象。

参数:
  • title (str) – 复选框的标题文本。

  • value (bool) – 复选框的初始选中状态。

  • x (int) – 复选框的x坐标位置。

  • y (int) – 复选框的y坐标位置。

  • title_c (int) – 标题文本的十六进制颜色格式。

  • title_font (lv.lv_font_t) – 标题文本使用的字体。

  • bullet_border_c (int) – 复选框方块的边框颜色(十六进制格式)。

  • bullet_bg_c (int) – 复选框方块的背景颜色(十六进制格式)。

  • parent (lv.obj) – 要附加复选框的父对象。如果未指定,复选框将被附加到默认屏幕。

UiFlow2 代码块:

None

MicroPython 代码块:

from m5ui import M5Checkbox
import lvgl as lv
m5ui.init()
checkbox_0 = M5Checkbox(title="Check Me", value=True, x=10, y=10, title_c=0x2121, title_font=lv.font_montserrat_14, bullet_border_c=0x2196F3, bullet_bg_c=0xFFFFFF, parent=page0)
set_flag(flag, value)

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

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

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

返回:

None

UiFlow2 代码块:

set_flag.png

MicroPython 代码块:

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

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

参数:

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

返回:

None

UiFlow2 代码块:

toggle_flag.png

MicroPython 代码块:

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

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

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

  • value (bool) – 如果为True,则设置状态;如果为False,则取消设置状态。

返回:

None

UiFlow2 代码块:

set_state.png

MicroPython 代码块:

checkbox_0.set_state(lv.STATE.CHECKED, True)
toggle_state(state)

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

参数:

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

返回:

None

UiFlow2 代码块:

toggle_state.png

MicroPython 代码块:

checkbox_0.toggle_state(lv.STATE.CHECKED)
set_style_text_font(font, part)

设置复选框文本的字体。

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

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

返回:

None

UiFlow2 代码块:

set_style_text_font.png

MicroPython 代码块:

checkbox_0.set_style_text_font(lv.font_montserrat_14, lv.PART.MAIN | lv.STATE.DEFAULT)
set_text_color(color, opa, part)

设置复选框文本的颜色。

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

  • opa (int) – 颜色的不透明度。值应在0(透明)和255(不透明)之间。

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

返回:

None

UiFlow2 代码块:

set_text_color.png

MicroPython 代码块:

checkbox_0.set_text_color(lv.color_hex(0x000000), 255, lv.PART.MAIN | lv.STATE.DEFAULT)
checkbox_0.set_text_color(lv.color_hex(0x000000), 255, lv.PART.MAIN | lv.STATE.CHECKED)
set_bg_color(color, opa, part)

设置复选框指示器的背景颜色。

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

  • opa (int) – 颜色的不透明度。值应在0(透明)和255(不透明)之间。

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

返回:

None

UiFlow2 代码块:

set_bg_color.png

MicroPython 代码块:

checkbox_0.set_bg_color(lv.color_hex(0xFFFFFF), 255, lv.PART.INDICATOR | lv.STATE.DEFAULT)
checkbox_0.set_bg_color(lv.color_hex(0x2196F3), 255, lv.PART.INDICATOR | lv.STATE.CHECKED)
set_border_color(color, opa, part)

设置复选框指示器的边框颜色。

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

  • opa (int) – 颜色的不透明度。值应在0(透明)和255(不透明)之间。

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

返回:

None

UiFlow2 代码块:

set_border_color.png

MicroPython 代码块:

checkbox_0.set_border_color(lv.color_hex(0x2196F3), 255, lv.PART.INDICATOR | lv.STATE.DEFAULT)
set_pos(x, y)

设置复选框的位置。

参数:
  • x (int) – 复选框的x坐标。

  • y (int) – 复选框的y坐标。

返回:

None

UiFlow2 代码块:

set_pos.png

MicroPython 代码块:

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

设置复选框的x坐标。

参数:

x (int) – 复选框的x坐标。

返回:

None

UiFlow2 代码块:

set_x.png

MicroPython 代码块:

checkbox_0.set_x(100)
set_y(y)

设置复选框的y坐标。

参数:

y (int) – 复选框的y坐标。

返回:

None

UiFlow2 代码块:

set_y.png

MicroPython 代码块:

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

设置复选框的大小。

参数:
  • width (int) – 复选框的宽度。

  • height (int) – 复选框的高度。

返回:

None

UiFlow2 代码块:

set_size.png

MicroPython 代码块:

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

设置复选框的宽度。

参数:

width (int) – 复选框的宽度。

返回:

None

UiFlow2 代码块:

set_width.png

MicroPython 代码块:

checkbox_0.set_width(100)
get_width()

获取复选框的宽度。

返回:

复选框的宽度。

返回类型:

int

UiFlow2 代码块:

get_width.png

MicroPython 代码块:

checkbox_0.get_width()
set_height(height)

设置复选框的高度。

参数:

height (int) – 复选框的高度。

返回:

None

UiFlow2 代码块:

set_height.png

MicroPython 代码块:

checkbox_0.set_height(50)
get_height()

获取复选框的高度。

返回:

复选框的高度。

返回类型:

int

UiFlow2 代码块:

get_height.png

MicroPython 代码块:

checkbox_0.get_height()
align_to(obj, align, x, y)

将复选框对齐到另一个对象。

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

  • align (int) – 对齐类型。

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

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

返回:

None

UiFlow2 代码块:

align_to.png

MicroPython 代码块:

checkbox_0.align_to(page_0, lv.ALIGN.CENTER, 0, 0)
set_style_radius(radius, part)

设置复选框指示器的圆角半径。

参数:
  • radius (int) – 要设置的半径。

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

返回:

None

UiFlow2 代码块:

set_style_radius.png

MicroPython 代码块:

checkbox_0.set_style_radius(10, lv.PART.INDICATOR | lv.STATE.DEFAULT)
set_text(text)

设置复选框的文本。

参数:

text (str) – 要设置的文本。

返回:

None

UiFlow2 代码块:

set_text.png

MicroPython 代码块:

checkbox_0.set_text("Checkbox")
get_text()

获取复选框的文本。

返回:

复选框的文本。

返回类型:

str

UiFlow2 代码块:

get_text.png

MicroPython 代码块:

checkbox_0.get_text()
add_event_cb(handler, event, user_data)

为复选框添加事件回调。当指定事件发生时,将调用回调函数。

参数:
  • handler (function) – 要调用的回调函数。

  • event (int) – 要监听的事件。

  • user_data (Any) – 传递给回调函数的可选用户数据。

返回:

None

UiFlow2 代码块:

event.png

MicroPython 代码块:

def checkbox_0_checked_event(event_struct):
    global checkbox_0
    print("Checkbox checked!")

def checkbox_0_unchecked_event(event_struct):
    global checkbox_0
    print("Checkbox unchecked!")

def checkbox_0_event_handler(event_struct):
    global checkbox_0
    event = event_struct.code
    if event == lv.EVENT.VALUE_CHANGED and checkbox_0.has_state(lv.STATE.CHECKED):
        checkbox_0_checked_event(event_struct)
    elif event == lv.EVENT.VALUE_CHANGED and not checkbox_0.has_state(lv.STATE.CHECKED):
        checkbox_0_unchecked_event(event_struct)
    return

checkbox_0.add_event_cb(checkbox_0_event_handler, lv.EVENT.ALL, None)