插入一个弹出框容器。

插入一个多元素容器作为弹出框。它由一个类似按钮的元素和一个在点击按钮时打开的容器组成。

打开和关闭弹出窗口不会触发重新运行。与打开的弹出窗口内的小部件交互将重新运行应用程序,同时保持弹出窗口打开。点击弹出窗口外部将关闭它。

要向返回的容器添加元素,您可以使用“with”符号(推荐)或直接在返回的对象上调用方法。请参见下面的示例。

警告

您不能将一个弹出框放在另一个弹出框内。

函数签名[source]

st.popover(label, *, help=None, icon=None, disabled=False, use_container_width=False)

参数

label (str)

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

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

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

help (str)

当悬停在弹出按钮上时显示的可选工具提示。

icon (str)

一个可选的emoji或图标,显示在按钮标签旁边。如果iconNone(默认),则不显示图标。如果icon是一个 字符串,则以下选项有效:

  • 一个单字符的emoji。例如,您可以设置icon="🚨"icon="🔥"。不支持emoji短代码。

  • 来自Material Symbols库(圆角风格)的图标,格式为 ":material/icon_name:",其中"icon_name"是图标名称 的蛇形命名。

    例如,icon=":material/thumb_up:"将显示 Thumb Up图标。在Material Symbols 字体库中查找更多图标。

disabled (bool)

一个可选的布尔值,如果设置为True,则禁用弹出按钮。默认值为False

use_container_width (bool)

是否扩展按钮的宽度以填充其父容器。 如果 use_container_widthFalse(默认),Streamlit 会调整按钮的大小以适应其内容。如果 use_container_widthTrue,按钮的宽度将与其父容器匹配。

在这两种情况下,如果按钮的内容比父容器宽,内容将换行。

弹出窗口容器的最小宽度与其按钮的宽度匹配。弹出窗口容器可能比其按钮宽,以适应容器的内容。

示例

你可以使用with符号将任何元素插入到弹出框中:

import streamlit as st

with st.popover("Open popover"):
    st.markdown("Hello World 👋")
    name = st.text_input("What's your name?")

st.write("Your name:", name)

或者你可以直接在返回的对象上调用方法:

import streamlit as st

popover = st.popover("Filter items")
red = popover.checkbox("Show red items.", True)
blue = popover.checkbox("Show blue items.", True)

if red:
    st.write(":red[This is a red item.]")
if blue:
    st.write(":blue[This is a blue item.]")
forum

还有问题吗?

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