显示一个多选控件。

多选控件最初是空的。

函数签名[来源]

st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, max_selections=None, placeholder=None, disabled=False, label_visibility="visible", accept_new_options=False)

参数

label (str)

向用户解释此选择控件用途的简短标签。标签可以包含 GitHub-flavored Markdown,类型包括:粗体、斜体、删除线、内联代码、链接和图像。图像显示为图标,最大高度等于字体高度。

不支持的 Markdown 元素会被展开,因此只有其子元素(文本内容)会渲染。通过反斜杠转义来将不支持的元素显示为字面字符。例如,"1\. 非有序列表".

请参阅body参数,了解更多支持的 Markdown 指令。

出于可访问性原因,您不应设置空标签,但可以使用以下参数隐藏它:label_visibility(如果需要)。将来,我们可能会通过抛出异常来禁止空标签。

options (Iterable)

选择选项的标签,位于一个Iterable中。这可以是list, set,或任何由st.dataframe支持的类型。如果options是类似 dataframe 的类型,将使用第一列。默认情况下,每个标签都会内部转换为str类型。

default (Iterable of V, V, or None)

默认值列表。也可以是单个值。

format_func (function)

用于修改选项显示的函数。它接收原始选项作为参数,并应输出该选项要显示的标签。这不影响命令的返回值。

key (str or int)

用作控件唯一键的可选字符串或整数。如果省略,将根据控件内容生成键。不能有两个控件具有相同的键。

help (str or None)

显示在控件标签旁边的工具提示。Streamlit 仅在以下情况下显示工具提示:label_visibility="visible"。如果这是None(默认),则不显示工具提示。

工具提示可以选择包含 GitHub-flavored Markdown,包括在body参数中描述的st.markdown.

on_change (callable)

此控件的值更改时调用的可选回调函数。

args (tuple)

传递给回调函数的 args 可选元组。

kwargs (dict)

传递给回调函数的 kwargs 可选字典。

max_selections (int)

一次最多可以选择的数量。

placeholder (str or None)

未选择任何选项时显示的字符串。如果这是None(默认),控件显示以下两种占位符字符串之一:

  • 如果您设置了,则显示“选择一个选项”accept_new_options=False.
  • 如果您设置了,则显示“选择或添加一个选项”accept_new_options=True.

disabled (bool)

可选的布尔值,如果设置为True,则禁用多选控件。默认值为False.

label_visibility ("visible", "hidden", 或 "collapsed")

标签的可见性。默认值为"visible"。如果这是"hidden",Streamlit 会显示一个空间隔而不是标签,这有助于使控件与其他控件对齐。如果这是"collapsed",Streamlit 不显示标签或间隔。

accept_new_options (bool)

用户是否可以添加未包含在以下选项中的选择:options。如果这是False(默认),用户只能从以下选项中进行选择:options。如果这是True,用户可以输入不在以下选项中的新项目:options.

当用户输入并选择一个新项目时,它将作为字符串包含在控件的返回列表中。新项目不会添加到控件的下拉菜单中。Streamlit 将使用以下选项的options进行不区分大小写的匹配,然后再添加新项目,如果已经选择了不区分大小写的匹配项,则无法添加新项目。max_selections参数仍然有效。

返回值

(list)

包含选定选项的列表

示例

示例 1:使用基本的多选控件

您可以使用以下参数声明一个或多个初始选项:default参数。

import streamlit as st

options = st.multiselect(
    "What are your favorite colors?",
    ["Green", "Yellow", "Red", "Blue"],
    default=["Yellow", "Red"],
)

st.write("You selected:", options)

示例 2:允许用户添加新选项

要允许用户输入并选择不在以下列表中的新选项:options列表,请使用accept_new_options参数。要阻止用户添加无限数量的新选项,请使用max_selections参数。

import streamlit as st

options = st.multiselect(
    "What are your favorite cat names?",
    ["Jellybeans", "Fish Biscuit", "Madam President"],
    max_selections=5,
    accept_new_options=True,
)

st.write("You selected:", options)
forum

还有问题?

我们的 论坛 包含大量有用信息和 Streamlit 专家。