M5Dropdown
M5Dropdown是一个可以在用户界面中创建下拉菜单的控件。它允许用户通过紧凑的下拉界面从可用选项列表中选择一个选项。
UiFlow2 示例
四个方向的下拉菜单
在UiFlow2中打开 cores3_dropdown_directions_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 13dropdown0 = None 14dropdown1 = None 15dropdown2 = None 16dropdown3 = None 17 18 19def setup(): 20 global page0, dropdown0, dropdown1, dropdown2, dropdown3 21 22 M5.begin() 23 Widgets.setRotation(1) 24 m5ui.init() 25 page0 = m5ui.M5Page(bg_c=0xFFFFFF) 26 dropdown0 = m5ui.M5Dropdown( 27 x=110, 28 y=0, 29 w=100, 30 h=lv.SIZE_CONTENT, 31 options=["option1", "option2"], 32 direction=lv.DIR.BOTTOM, 33 show_selected=True, 34 font=lv.font_montserrat_14, 35 parent=page0, 36 ) 37 dropdown1 = m5ui.M5Dropdown( 38 x=111, 39 y=212, 40 w=100, 41 h=lv.SIZE_CONTENT, 42 options=["option1", "option2"], 43 direction=lv.DIR.TOP, 44 show_selected=True, 45 font=lv.font_montserrat_14, 46 parent=page0, 47 ) 48 dropdown2 = m5ui.M5Dropdown( 49 x=220, 50 y=106, 51 w=100, 52 h=lv.SIZE_CONTENT, 53 options=["option1", "option2"], 54 direction=lv.DIR.LEFT, 55 show_selected=True, 56 font=lv.font_montserrat_14, 57 parent=page0, 58 ) 59 dropdown3 = m5ui.M5Dropdown( 60 x=0, 61 y=106, 62 w=100, 63 h=lv.SIZE_CONTENT, 64 options=["option1", "option2"], 65 direction=lv.DIR.RIGHT, 66 show_selected=True, 67 font=lv.font_montserrat_14, 68 parent=page0, 69 ) 70 71 page0.screen_load() 72 dropdown0.set_selected_highlight(True) 73 dropdown1.set_selected_highlight(True) 74 dropdown2.set_selected_highlight(True) 75 dropdown3.set_selected_highlight(True) 76 77 78def loop(): 79 global page0, dropdown0, dropdown1, dropdown2, dropdown3 80 M5.update() 81 82 83if __name__ == "__main__": 84 try: 85 setup() 86 while True: 87 loop() 88 except (Exception, KeyboardInterrupt) as e: 89 try: 90 m5ui.deinit() 91 from utility import print_error_msg 92 93 print_error_msg(e) 94 except ImportError: 95 print("please update to latest firmware")
示例输出:
None
API参考
M5Dropdown
- class m5ui.dropdown.M5Dropdown(*args, **kwargs)
基类:
dropdown创建一个下拉菜单对象。
- 参数:
x – 下拉菜单的X坐标位置。
y – 下拉菜单的Y坐标位置。
w – 下拉菜单的宽度。
h – 下拉菜单的高度,默认为 lv.SIZE_CONTENT。
options (list) – 在下拉菜单中显示的选项列表。
direction (int) – 下拉菜单的方向,可以是 lv.DIR.LEFT、lv.DIR.RIGHT、lv.DIR.TOP 或 lv.DIR.BOTTOM。
show_selected (bool) – 是否高亮显示选中的选项,默认为 True。
font (lvgl.font_t) – 下拉菜单中文本使用的字体,默认为 lv.font_montserrat_14。
parent – 此下拉菜单的父对象,默认为当前活动屏幕。
- set_flag(flag, value)
为对象设置标志。如果
value为True,则添加标志;如果为False,则移除标志。UiFlow2 代码块:

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

MicroPython 代码块:
dropdown_0.toggle_flag(lv.obj.FLAG.HIDDEN)
- set_state(state, value)
设置下拉菜单的状态。如果
value为True,则设置状态;如果为False,则取消设置状态。UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_state(lv.STATE.CHECKED, True)
- toggle_state(state)
切换下拉框的状态。如果状态已设置,则取消设置;如果未设置,则设置。
- 参数:
state (int) – 要切换的状态。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.toggle_state(lv.STATE.CHECKED)
- set_pos(x, y)
设置下拉菜单的位置。
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_pos(100, 100)
- set_x(x)
设置下拉菜单的X坐标。
- 参数:
x (int) – 下拉菜单的X坐标。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_x(100)
- set_y(y)
设置下拉菜单的Y坐标。
- 参数:
y (int) – 下拉菜单的Y坐标。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_y(100)
- set_width(width)
设置下拉菜单的宽度。
- 参数:
width (int) – 下拉菜单的宽度。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_width(100)
- set_height(height)
设置下拉菜单的高度。
- 参数:
height (int) – 下拉菜单的高度。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_height(50)
- get_height()
获取下拉菜单的高度。
- 返回:
下拉菜单的高度。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.get_height()
- align_to(obj, align, x, y)
将下拉菜单对齐到另一个对象。
- 参数:
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.align_to(page_0, lv.ALIGN.CENTER, 0, 0)
- get_selected()
获取当前选中选项的索引。
- 返回:
选中选项的索引。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
selected_index = dropdown_0.get_selected()
- set_selected_highlight(enable)
启用或禁用选中选项的高亮显示。
- 参数:
enable (bool) – True表示启用高亮显示,False表示禁用。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_selected_highlight(True)
- get_option_count()
清除下拉列表中的所有选项。
- 返回:
下拉菜单中的选项数量。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
option_count = dropdown_0.get_option_count()
- get_option_index(option)
获取选项的索引。
UiFlow2 代码块:

MicroPython 代码块:
index = dropdown_0.get_option_index("Option 1") if index != -1: print(f"Option found at index: {index}") else: print("Option not found")
- get_text()
获取下拉列表按钮的文本。
- 返回:
下拉菜单按钮的文本。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
text = dropdown_0.get_text() print(f"Dropdown button text: {text}")
- set_text(txt)
设置下拉列表按钮的文本。
- 参数:
txt (str) – 为下拉按钮设置的文本。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_text("Select an option")
- add_event_cb(handler, event, user_data)
为下拉菜单添加事件回调。当指定事件发生时将调用回调函数。
- 参数:
handler (function) – 要调用的回调函数。
event (int) – 要监听的事件。
user_data (Any) – 要传递给回调函数的可选用户数据。
- 返回:
None
UiFlow2 代码块:

MicroPython 代码块:
def dropdown_0_value_changed_event(event_struct): global dropdown_0 selected = dropdown_0.get_selected_str() print(f"Selected: {selected}") def dropdown_0_event_handler(event_struct): global dropdown_0 event = event_struct.code if event == lv.EVENT.VALUE_CHANGED: dropdown_0_value_changed_event(event_struct) return dropdown_0.add_event_cb(dropdown_0_event_handler, lv.EVENT.ALL, None)
- set_options(options)
设置下拉菜单的选项。
- 参数:
options (list) – 在下拉菜单中显示的选项列表。
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_options(["option1", "option2", "option3"])
- add_option(option, pos)
在特定位置的下拉菜单中添加一个选项。
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.add_option("New Option", 1)
- clear_options()
清空下拉菜单中的所有选项。
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.clear_options()
- 返回类型:
None
- get_selected_str()
以字符串形式获取当前选中的选项。
- 返回:
选中的选项(字符串形式)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
selected_option = dropdown_0.get_selected_str()
- set_dir(direction)
设置下拉菜单的方向。
- 参数:
direction (int) – 下拉菜单的方向,可以是 lv.DIR.LEFT、lv.DIR.RIGHT、lv.DIR.TOP 或 lv.DIR.BOTTOM。
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
dropdown_0.set_dir(lv.DIR.LEFT)
- set_style_radius(radius, part)
设置下拉菜单角的半径。
UiFlow2 代码块:
None
MicroPython 代码块:
dropdown_0.set_style_radius(10, lv.PART.MAIN | lv.STATE.DEFAULT)


