star

提示

本页面仅包含有关st.forms API的信息。要深入了解在Streamlit应用程序中创建和使用表单,请阅读我们的指南使用表单

创建一个表单,将元素与“提交”按钮一起批量处理。

表单是一个容器,它视觉上将其他元素和小部件组合在一起,并包含一个提交按钮。当表单的提交按钮被按下时,表单内的所有小部件值将批量发送到Streamlit。

要向表单对象添加元素,您可以使用with表示法(推荐)或直接在表单上调用方法。请参见下面的示例。

表单有一些约束条件:

  • 每个表单必须包含一个 st.form_submit_button
  • st.buttonst.download_button 不能添加到表单中。
  • 表单可以出现在应用程序的任何位置(侧边栏、列等),但不能嵌入到其他表单中。
  • 在表单中,唯一可以具有回调函数的小部件是 st.form_submit_button
函数签名[source]

st.form(key, clear_on_submit=False, *, enter_to_submit=True, border=True)

参数

key (str)

一个用于标识表单的字符串。每个表单必须有自己的键。(此键不会在界面中显示给用户。)

clear_on_submit (bool)

如果为True,用户按下提交按钮后,表单内的所有小部件将重置为其默认值。默认为False。 (请注意,自定义组件不受此标志的影响,并且在表单提交时不会重置为其默认值。)

enter_to_submit (bool)

当用户在与表单中的小部件交互时按下Enter键时,是否提交表单。

如果这是True(默认值),在与表单小部件交互时按下Enter键等同于点击表单中的第一个st.form_submit_button

如果这是False,用户必须点击st.form_submit_button来提交表单。

如果表单中的第一个st.form_submit_button被禁用,表单将覆盖提交行为,使用enter_to_submit=False

border (bool)

是否在表单周围显示边框。默认为True。

注意

不显示边框可能会让用户感到困惑,因为与表单中的小部件交互时不会有任何反应。只有在有其他边框(例如由于扩展器)或表单很小(例如只有一个文本输入和一个提交按钮)时,才应移除边框。

示例

使用with符号插入元素:

import streamlit as st

with st.form("my_form"):
    st.write("Inside the form")
    slider_val = st.slider("Form slider")
    checkbox_val = st.checkbox("Form checkbox")

    # Every form must have a submit button.
    submitted = st.form_submit_button("Submit")
    if submitted:
        st.write("slider", slider_val, "checkbox", checkbox_val)
st.write("Outside the form")

无序插入元素:

import streamlit as st

form = st.form("my_form")
form.slider("Inside the form")
st.slider("Outside the form")

# Now add a submit button to the form:
form.form_submit_button("Submit")
forum

还有问题吗?

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