插入一个状态容器以显示长时间运行任务的输出。

在你的应用中插入一个容器,通常用于显示过程或任务的状态和详细信息。该容器可以容纳多个元素,并且用户可以像st.expander一样展开或折叠它。当折叠时,只有状态图标和标签可见。

标签、状态和展开状态都可以通过在返回的对象上调用.update()来更新。要向返回的容器中添加元素,您可以使用with表示法(推荐)或直接在返回的对象上调用方法。

默认情况下,st.status() 以“运行中”状态初始化。当使用 with 符号调用时,它会在“with”块结束时自动更新为“完成”状态。更多详情请参见下面的示例。

函数签名[source]

st.status(label, *, expanded=False, state="running")

参数

label (str)

状态容器的初始标签。标签可以选择性地包含以下类型的GitHub风格的Markdown:粗体、斜体、删除线、内联代码、链接和图像。图像显示为图标,最大高度等于字体高度。

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

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

expanded (bool)

如果为True,则以“展开”状态初始化状态容器。默认为False(折叠)。

状态 ("running", "complete", 或 "error")

状态容器的初始状态,决定显示哪个图标:

  • running (默认): 显示一个旋转图标。
  • complete: 显示一个勾号图标。
  • error: 显示一个错误图标。
返回

(StatusContainer)

一个可变的状态容器,可以容纳多个元素。标签、状态和展开状态可以在创建后通过.update()进行更新。

示例

你可以使用with符号将任何元素插入到状态容器中:

import time
import streamlit as st

with st.status("Downloading data..."):
    st.write("Searching for data...")
    time.sleep(2)
    st.write("Found URL.")
    time.sleep(1)
    st.write("Downloading data...")
    time.sleep(1)

st.button("Rerun")

你也可以在容器上使用 .update() 来更改标签、状态或展开状态:

import time
import streamlit as st

with st.status("Downloading data...", expanded=True) as status:
    st.write("Searching for data...")
    time.sleep(2)
    st.write("Found URL.")
    time.sleep(1)
    st.write("Downloading data...")
    time.sleep(1)
    status.update(
        label="Download complete!", state="complete", expanded=False
    )

st.button("Rerun")

更新状态容器。

仅更新指定的参数。容器内容和未指定的参数保持不变。

函数签名[source]

StatusContainer.update(*, label=None, expanded=None, state=None)

参数

label (str or None)

状态容器的新标签。如果为None,则标签不会更改。

expanded (bool or None)

状态容器的新展开状态。如果为 None, 则展开状态不会改变。

状态 ("running", "complete", "error", 或 None)

状态容器的新状态。这主要改变图标。如果为 None,则状态不变。

forum

还有问题吗?

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