显示一个分段控制小部件。

分段控制小部件是一组线性的分段,其中每个传递的options功能类似于一个切换按钮。

函数签名[source]

st.segmented_control(label, options, *, selection_mode="single", default=None, format_func=None, key=None, help=None, on_change=None, args=None, kwargs=None, disabled=False, label_visibility="visible")

参数

label (str)

一个简短的标签,向用户解释这个小部件的用途。 标签可以选择性地包含以下类型的GitHub风格的Markdown:粗体、斜体、删除线、内联代码、链接和图片。图片显示为图标,最大高度等于字体高度。

不支持的Markdown元素会被解包,因此只有它们的子元素(文本内容)会呈现。通过反斜杠转义不支持的元素,将其显示为字面字符。例如, "1\. 不是一个有序列表"

有关其他支持的Markdown指令,请参见st.markdownbody参数。

出于可访问性原因,您永远不应设置空标签,但您可以使用label_visibility在需要时隐藏它。将来,我们可能会通过引发异常来禁止空标签。

options (Iterable of V)

选择选项的标签在一个Iterable中。这可以是一个 listset,或者任何st.dataframe支持的内容。如果 options是类似数据框的,将使用第一列。每个 标签默认情况下将在内部转换为str

selection_mode ("single" or "multi")

小部件的选择模式。如果这是"single" (默认),只能选择一个选项。如果这是"multi", 可以选择多个选项。

默认值 (Iterable of V, V, or None)

小部件首次渲染时的值。如果 selection_modemulti,这可以是一个值列表、单个值或 None。如果 selection_mode"single",这可以是单个值或 None

format_func (function)

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

key (str or int)

一个可选的字符串或整数,用作小部件的唯一键。 如果省略,将根据小部件的内容生成一个键。 相同类型的多个小部件不能共享相同的键。

help (str)

一个可选的小提示,显示在小部件标签旁边。 只有当label_visibility="visible"时,Streamlit才会显示这个小提示。

on_change (callable)

当此小部件的值发生变化时调用的可选回调函数。

args (tuple)

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

kwargs (dict)

一个可选的kwargs字典,用于传递给回调函数。

disabled (bool)

一个可选的布尔值,如果设置为True,则禁用该小部件。 默认值为False

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

标签的可见性。默认是"visible"。如果这是"hidden",Streamlit会显示一个空白的间隔符而不是标签,这有助于保持小部件与其他小部件对齐。如果这是"collapsed",Streamlit不会显示标签或间隔符。

返回

(list of V, V, or None)

如果 selection_modemulti,这是一个选中的选项列表或空列表。如果 selection_mode"single",这是一个选中的选项或 None

示例

示例 1:多选分段控件

显示一个多选分段控制小部件,并展示选择:

import streamlit as st

options = ["North", "East", "South", "West"]
selection = st.segmented_control(
    "Directions", options, selection_mode="multi"
)
st.markdown(f"Your selected options: {selection}.")

示例2:带有图标的单选分段控件

显示一个带有图标的单选分段控制小部件:

import streamlit as st

option_map = {
    0: ":material/add:",
    1: ":material/zoom_in:",
    2: ":material/zoom_out:",
    3: ":material/zoom_out_map:",
}
selection = st.segmented_control(
    "Tool",
    options=option_map.keys(),
    format_func=lambda option: option_map[option],
    selection_mode="single",
)
st.write(
    "Your selected option: "
    f"{None if selection is None else option_map[selection]}"
)
forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。