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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:05:57