如何在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
相关产品推荐
相关产品推荐

