Streamlit应用清除输入字段功能失效问题求助
解决Streamlit清除按钮无法清空输入框的问题
问题原因
直接给局部变量question赋值空字符串""不会同步更新Streamlit的组件状态,因为Streamlit的输入组件状态是通过Session State管理的,局部变量的修改无法反馈到UI上。
修复后的代码
import streamlit as st def question_and_answer_app(): st.title("Question and Answer App") # 初始化Session State中的question变量 if "question" not in st.session_state: st.session_state.question = "" # 将text_input的value绑定到session_state的question question = st.text_input("Enter your question:", value=st.session_state.question) # 实时同步输入框内容到Session State st.session_state.question = question answer_placeholder = st.empty() col1, col2 = st.columns(2) if col1.button("Submit"): reversed_question = question[::-1] answer_placeholder.text("Answer: " + reversed_question) if col2.button("Clear"): # 修改Session State清空输入框 st.session_state.question = "" answer_placeholder.empty() if __name__ == "__main__": question_and_answer_app()
关键修改说明
- 使用
st.session_state存储输入框状态,确保UI与数据状态同步 - 给
text_input的value参数绑定st.session_state.question,实现双向状态绑定 - 清除按钮点击时,直接修改
st.session_state.question为空字符串,触发输入框UI自动更新
内容的提问来源于stack exchange,提问作者Atilio
相关产品推荐
相关产品推荐

