M5Page

M5Page 是一个可用于在用户界面中创建页面的小部件。它可以用来组织其他小部件,并在不同页面之间提供导航。

UiFlow2 应用示例

页面事件

在 UiFlow2 中打开 cores3_page_event_example.m5f2 项目。

按住屏幕时,屏幕背景色变为黑色。松开屏幕时,背景色恢复为白色。

UiFlow2 代码块:

cores3_page_event_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
13
14
15def page0_pressed_event(event_struct):
16    global page0
17
18    page0.set_bg_color(0x000000, 255, 0)
19
20
21def page0_released_event(event_struct):
22    global page0
23
24    page0.set_bg_color(0xFFFFFF, 255, 0)
25
26
27def page0_clicked_event(event_struct):
28    global page0
29
30    page0.set_bg_color(0x000000, 255, 0)
31
32
33def page0_long_pressed_event(event_struct):
34    global page0
35
36    page0.set_bg_color(0x000000, 255, 0)
37
38
39def page0_event_handler(event_struct):
40    global page0
41    event = event_struct.code
42    if event == lv.EVENT.PRESSED and True:
43        page0_pressed_event(event_struct)
44    if event == lv.EVENT.RELEASED and True:
45        page0_released_event(event_struct)
46    if event == lv.EVENT.CLICKED and True:
47        page0_clicked_event(event_struct)
48    if event == lv.EVENT.LONG_PRESSED and True:
49        page0_long_pressed_event(event_struct)
50    return
51
52
53def setup():
54    global page0
55
56    M5.begin()
57    m5ui.init()
58    page0 = m5ui.M5Screen(bg_c=0xFFFFFF)
59
60    page0.add_event_cb(page0_event_handler, lv.EVENT.ALL, None)
61
62    page0.screen_load()
63
64
65def loop():
66    global page0
67    M5.update()
68
69
70if __name__ == "__main__":
71    try:
72        setup()
73        while True:
74            loop()
75    except (Exception, KeyboardInterrupt) as e:
76        try:
77            m5ui.deinit()
78            from utility import print_error_msg
79
80            print_error_msg(e)
81        except ImportError:
82            print("please update to latest firmware")

示例输出:

None

API参考

M5Button

class m5ui.page.M5Page(*args, **kwargs)

基类:obj

创建一个页面对象。

参数:

bg_c (int) – 页面背景颜色(十六进制格式)。默认值为 0xFFFFFF(白色)。

UiFlow2 代码块:

None

MicroPython 代码块:

from m5ui import M5Page
import lvgl as lv

m5ui.init()
page_0 = M5Page(bg_c=0xFFFFFF)
set_flag(flag, value)

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

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

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

返回:

None

UiFlow2 代码块:

set_flag.png

MicroPython 代码块:

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

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

参数:

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

返回:

None

UiFlow2 代码块:

toggle_flag.png

MicroPython 代码块:

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

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

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

参数:

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

返回:

None

UiFlow2 代码块:

toggle_state.png

MicroPython 代码块:

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

设置页面的背景颜色。

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

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

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

返回:

None

UiFlow2 代码块:

set_bg_color.png

MicroPython 代码块:

page_0.set_bg_color(lv.color_hex(0x000000), 255, lv.PART.MAIN | lv.STATE.DEFAULT)
add_event_cb(handler, event, user_data)

向页面添加事件回调。当指定事件发生时,将调用该回调。

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

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

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

返回:

None

UiFlow2 代码块:

event.png

MicroPython 代码块:

def page0_pressed_event(event_struct):
    global page0
    page0.set_bg_color(0x000000, 255, 0)

def page0_released_event(event_struct):
    global page0
    page0.set_bg_color(0xffffff, 255, 0)

def page0_clicked_event(event_struct):
    global page0
    page0.set_bg_color(0x000000, 255, 0)

def page0_event_handler(event_struct):
    global page0
    event = event_struct.code
    if event == lv.EVENT.PRESSED and True:
        page0_pressed_event(event_struct)
    if event == lv.EVENT.RELEASED and True:
        page0_released_event(event_struct)
    if event == lv.EVENT.CLICKED and True:
        page0_clicked_event(event_struct)
    if event == lv.EVENT.LONG_PRESSED and True:
        page0_long_pressed_event(event_struct)
    return

page_0.add_event_cb(page0_event_handler, lv.EVENT.ALL, None)
screen_load()

加载该页面作为活动屏幕。

UiFlow2 代码块:

screen_load.png

MicroPython 代码块:

page_0.screen_load()