st.dataframest.data_editor中配置一个链接列。

单元格值需要是字符串,并将显示为可点击的链接。 此命令需要在st.dataframest.data_editor的column_config参数中使用。 当与st.data_editor一起使用时,将启用文本输入小部件进行编辑。

函数签名[source]

st.column_config.LinkColumn(label=None, *, width=None, help=None, disabled=None, required=None, pinned=None, default=None, max_chars=None, validate=None, display_text=None)

参数

label (str or None)

显示在列顶部的标签。如果这是None(默认值),则使用列名。

宽度 ("small", "medium", "large", 或 None)

列的显示宽度。如果这是 None(默认值),列将根据单元格内容自动调整大小。否则,可以是以下之一:

  • "small": 75px 宽
  • "medium": 200px 宽
  • "large": 400px 宽

帮助 (str 或 None)

一个可选的工具提示,当悬停在列标签上时会显示。如果这是 None(默认值),则不显示工具提示。

disabled (bool or None)

是否应禁用此列的编辑。如果这是None (默认),Streamlit 将决定:索引被禁用,数据列 则不被禁用。

如果列具有混合类型,无论disabled如何,它都可能变得不可编辑。

required (bool or None)

列中编辑的单元格是否需要有一个值。如果这是 False(默认),用户可以为此列提交空值。 如果这是True,则此列中编辑的单元格只有在 其值不为None时才能提交,并且新行只有在 用户填写此列后才能提交。

pinned (bool or None)

列是否被固定。被固定的列将始终显示在左侧,无论用户滚动到哪里。如果这是 None(默认值),Streamlit 将决定:索引列被固定,数据列不被固定。

默认值 (str 或 None)

指定当用户添加新行时此列的默认值。默认为 None

max_chars (int or None)

可以输入的最大字符数。如果这是None(默认值),则没有最大限制。

validate (str or None)

一个JS风格的正则表达式(例如"^https://.+$"),用于验证编辑后的值。如果用户输入无效,则不会提交。

display_text (str or None)

单元格中显示的文本。这可以是以下之一:

  • None(默认)以显示URL本身。
  • 在每个单元格中显示的字符串,例如"打开链接"
  • 一个JS风格的正则表达式(通过使用括号检测)以通过捕获组提取URL的一部分。例如,使用"https://(.*?)\.example\.com"从URL "https://foo.example.com"中提取显示文本"foo"。

对于更复杂的情况,您可以在底层数据帧上使用Pandas Styler的format函数。请注意,这会使应用程序变慢,不适用于可编辑的列,并且可能在将来被移除。column_config中的文本格式始终优先于pandas.Styler中的文本格式。

示例

import pandas as pd
import streamlit as st

data_df = pd.DataFrame(
    {
        "apps": [
            "https://roadmap.streamlit.app",
            "https://extras.streamlit.app",
            "https://issues.streamlit.app",
            "https://30days.streamlit.app",
        ],
        "creator": [
            "https://github.com/streamlit",
            "https://github.com/arnaudmiribel",
            "https://github.com/streamlit",
            "https://github.com/streamlit",
        ],
    }
)

st.data_editor(
    data_df,
    column_config={
        "apps": st.column_config.LinkColumn(
            "Trending apps",
            help="The top trending Streamlit apps",
            validate=r"^https://[a-z]+\.streamlit\.app$",
            max_chars=100,
            display_text=r"https://(.*?)\.streamlit\.app"
        ),
        "creator": st.column_config.LinkColumn(
            "App Creator", display_text="Open profile"
        ),
    },
    hide_index=True,
)
forum

还有问题吗?

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