You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Streamlit中根据其他输入值生成动态输入组件并提取值?

如何在Streamlit中动态生成输入组件并获取其值?

要实现根据输入的产品数量动态生成对应数量的产品编码输入框,同时提取所有输入值,核心是利用Streamlit的**会话状态(session_state)**追踪组件状态和用户输入,以下是具体实现方案:

完整代码示例

import streamlit as st

# 初始化会话状态,避免首次加载报错
if "num_products" not in st.session_state:
    st.session_state.num_products = 1

# 产品数量输入框
st.session_state.num_products = st.number_input(
    "Number of Products",
    min_value=1,
    max_value=10,
    value=st.session_state.num_products
)

# 动态生成产品编码输入框
for i in range(st.session_state.num_products):
    st.text_input(
        f"Product Code {i+1}",
        key=f"product_code_{i}"  # 唯一key是追踪输入的关键
    )

# 提取并展示所有输入的产品编码
if st.button("提取所有产品编码"):
    product_codes = []
    for i in range(st.session_state.num_products):
        code = st.session_state.get(f"product_code_{i}", "")
        product_codes.append(code)
    st.write("已输入的产品编码:", product_codes)

关键要点说明

  • 唯一Key绑定:每个动态生成的text_input必须设置唯一的key(比如product_code_0、product_code_1),Streamlit会通过这个key将用户输入存储到session_state中,确保刷新页面或调整数量时输入值不会丢失。
  • 会话状态保存数量:把产品数量存入session_state,避免用户调整数量后,页面刷新导致数值重置。
  • 批量提取值:通过遍历对应格式的key,从session_state中逐个取出每个输入框的值,即可收集所有动态组件的输入内容。

内容的提问来源于stack exchange,提问作者Subaru Spirit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:57:22