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

Streamlit中提交问题后如何清空text_input输入框

Streamlit中提交问题后如何清空text_input输入框

我太懂你这种困扰了——用Streamlit做聊天类应用时,提交完问题输入框还留着内容,确实影响体验。其实核心就是用Streamlit的session_state来绑定输入框的值,提交后重置这个值就行,我来帮你改改代码:

首先,你需要把输入框的值和session_state变量绑定,这样就能手动控制它的内容。修改你的main()函数,同时调整一下输入框的定义:

修改后的完整代码示例

def handle_userinput(user_question):
    if not st.session_state.conversation:
        st.warning("Index not ready. Please wait a moment and try again.")
        return

    preface = "You are a helpful assistant: "
    bot_question = preface + user_question
    response = st.session_state.conversation({'question': bot_question})
    st.session_state.chat_history = response['chat_history']

    for i, message in enumerate(st.session_state.chat_history):
        if i % 2 == 0:  # User's message
            # Display only the original user's question without preface
            st.write(user_template.replace("{{MSG}}", user_question), unsafe_allow_html=True)
        else:  # Bot's response
            st.write(bot_template.replace("{{MSG}}", message.content), unsafe_allow_html=True)

def main():
    # 初始化session_state中的输入变量
    if 'user_input' not in st.session_state:
        st.session_state.user_input = ""

    # 将输入框的值绑定到session_state.user_input,同时设置唯一key
    user_question = st.text_input(
        "Ask a question:",
        value=st.session_state.user_input,
        key="chat_input_box"
    )

    if user_question:
        handle_userinput(user_question)
        # 提交后清空session_state里的输入值,输入框就会同步清空
        st.session_state.user_input = ""

if __name__ == "__main__":
    main()

关键修改点说明

  1. 初始化session_state变量:在main函数开头先检查user_input是否在session_state里,没有的话设为空字符串,确保每次加载都有初始值。
  2. 绑定输入框的value:把st.text_input的value参数设为st.session_state.user_input,这样输入框的内容就由这个变量控制。
  3. 提交后重置值:当用户提交问题(user_question不为空),处理完请求后,直接把st.session_state.user_input设为空,Streamlit重新渲染时输入框就会显示为空了。
  4. 添加唯一key:给输入框加个key参数(比如chat_input_box),确保Streamlit能正确跟踪这个组件的状态,避免出现奇怪的渲染问题。

这样改完之后,你提交问题后输入框就会自动清空啦,亲测有效~

备注:内容来源于stack exchange,提问作者starskiin3d

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:33:09