Skip to content

下拉选择器 Dropdown Selection

基于 Quasar 的 QSelect 组件。

选项可以指定为值列表,或作为将值映射到标签的字典。操作选项后,调用 update() 以更新用户界面中的选项。

with_inputTrue,则显示输入框用于筛选选项。

new_value_mode 不为 None,则隐含 with_input=True,用户可在输入框中输入新值。详情参见 Quasar 文档。注意,当以编程方式设置 value 属性时,此模式无效。

可通过 validation 参数定义验证规则字典,当输入内容与验证过程不一致则触发验证失败。例如我们需要保证内容长度小于3,则可以用 {'内容过长!': lambda value: len(value) < 3} 进行验证。如果有多个验证规则则将首个验证失败的规则键作为错误信息显示。您也可传递返回可选错误信息的可调用对象。若要禁用每次值变更时的自动验证,可使用 without_auto_validation 方法。

参数 Param说明 Description
options一个列表 ['value1', ...] 或一个字典(值) {'value1':'label1', ...}
label选择器的标题
value初始选中的的值
on_change当选中项改变时的回调函数
with_input是否显示用于筛选选项的输入框
new_value_mode是否接受用户输入新的值 (默认值: None,代表不接受新值)
multiple是否允许多选
clearable是否添加清除选择的按钮
validation验证规则字典或返回错误信息的可调用对象 (默认值: None,代表不验证)
key_generator为新增值生成字典键的回调函数或迭代器
python
from nicegui import ui

select1 = ui.select([1, 2, 3], value=1)
select2 = ui.select({1: 'One', 2: 'Two', 3: 'Three'}).bind_value(select1, 'value')

ui.run()

输入搜索

您可以激活 with_input 来获得一个带自动完成的文本输入框。选项会在您输入时被过滤。

python
from nicegui import ui

continents = [
    '亚洲',
    '非洲',
    '南极洲',
    '欧洲',
    '大洋洲',
    '北美洲',
    '南美洲',
]
ui.select(options=continents, with_input=True,
          on_change=lambda e: ui.notify(e.value)).classes('w-40')

ui.run()

多选

您可以激活 multiple 以允许选择多个项目。

python
from nicegui import ui

names = ['Alice', 'Bob', 'Carol']
ui.select(names, multiple=True, value=names[:2], label='逗号分隔') \
    .classes('w-64')
ui.select(names, multiple=True, value=names[:2], label='使用标签') \
    .classes('w-64').props('use-chips')

ui.run()

更新选项

可以通过 options 属性更改选项。但随后您还需要调用 update() 以使更改生效。set_options 是一个快捷方法,它同时执行这两个操作,对于 lambda 表达式非常有用。

python
from nicegui import ui

select = ui.select([1, 2, 3], value=1)
with ui.row():
    ui.button('4, 5, 6', on_click=lambda: select.set_options([4, 5, 6], value=4))
    ui.button('1, 2, 3', on_click=lambda: select.set_options([1, 2, 3], value=1))

ui.run()
最近更新

更新日期: 2025 年 12 月 17 日