下拉菜单
Material Design 按钮,用于从项目列表中选择。
下拉菜单允许用户从多个项目中选择。它显示当前选定的项目以及打开菜单以选择其他项目的箭头。
示例
基本下拉菜单
- Python
import flet as ft
def main(page: ft.Page):
def button_clicked(e):
t.value = f"Dropdown 值是: {dd.value}"
page.update()
t = ft.Text()
b = ft.ElevatedButton(text="提交", on_click=button_clicked)
dd = ft.Dropdown(
width=100,
options=[
ft.dropdown.Option("红色"),
ft.dropdown.Option("绿色"),
ft.dropdown.Option("蓝色"),
],
)
page.add(dd, b, t)
ft.app(target=main)
带标签和提示的下拉菜单
- Python
import flet as ft
def main(page: ft.Page):
page.add(
ft.Dropdown(
label="颜色",
hint_text="选择您喜欢的颜色?",
options=[
ft.dropdown.Option("红色"),
ft.dropdown.Option("绿色"),
ft.dropdown.Option("蓝色"),
],
autofocus=True,
)
)
ft.app(target=main)
带 on_change
事件的下拉菜单
- Python
import flet as ft
def main(page: ft.Page):
def dropdown_changed(e):
t.value = f"Dropdown 更改为 {dd.value}"
page.update()
t = ft.Text()
dd = ft.Dropdown(
on_change=dropdown_changed,
options=[
ft.dropdown.Option("红色"),
ft.dropdown.Option("绿色"),
ft.dropdown.Option("蓝色"),
],
width=200,
)
page.add(dd, t)
ft.app(target=main)
在下拉菜单选项中更改项目
- Python
import flet as ft
def main(page: ft.Page):
def find_option(option_name):
for option in d.options:
if option_name == option.key:
return option
return None
def add_clicked(e):
d.options.append(ft.dropdown.Option(option_textbox.value))
d.value = option_textbox.value
option_textbox.value = ""
page.update()
def delete_clicked(e):
option = find_option(d.value)
if option!= None:
d.options.remove(option)
# d.value = None
page.update()
d = ft.Dropdown()
option_textbox = ft.TextField(hint_text="输入项目名称")
add = ft.ElevatedButton("添加", on_click=add_clicked)
delete = ft.OutlinedButton("删除所选项目", on_click=delete_clicked)
page.add(d, ft.Row(controls=[option_textbox, add, delete]))
ft.app(target=main)
Dropdown
属性
alignment
定义了提示或所选项目在下拉菜单中的位置。
对齐方式是 Alignment
类的实例。
autofocus
如果控件将被选择为初始焦点,则为 True。如果页面上有多个控件具有 autofocus 设置,则第一个添加到页面的控件将获得焦点。
bgcolor
下拉菜单按钮和菜单的背景颜色。
要设置下拉菜单按钮的不同背景颜色,请使用 fill_color
或 focused_bgcolor
属性。
border
输入字段周围的边框。值是 InputBorder
。默认是 OUTLINE
。
border_color
边框颜色。可以是 transparent
以隐藏边框。
border_radius
边框半径是 BorderRadius
类的实例。
border_width
边框的宽度,以虚拟像素为单位。默认为 1
。设置为 0
以完全删除边框。
color
文本颜色。
content_padding
输入装饰容器的填充。
counter_style
用于 counter_text
的文本样式。
counter_text
可选的文本,以显示在行下方作为字符计数。
如果为空字符串或 null,并且 counter 未指定,则不会出现任何内容。
dense
是否TextField是密集表单的一部分(即,使用较少的垂直空间)。
elevation
下拉菜单的 elevation。默认为 8
。
enable_feedback
是否检测到的手势应该提供音频和/或触觉反馈。例如 ,在 Android 上,设置为 True
将产生点击声音,并且长按将产生短暂的振动。
默认为 True
。
error_style
用于 error_text
的文本样式。
error_text
出现在输入边框下的文本。
如果非 null,则边框的颜色将动画变为红色,并且 helper_text
不会显示。
filled
如果为 True,则装饰容器将被填充为主题 fill_color
。
如果 filled=None
(默认),则隐式设置为 True
,只要至少一个以下属性不为 null:fill_color
、focused_bgcolor
和 bgcolor
。
fill_color
下拉菜单按钮的背景颜色。不会在 filled=False
时显示。