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

如何在Streamlit中按下回车键后清空输入字段?

解决Streamlit文本框回车后保存输入并清空的问题

你的核心问题是回调触发时直接清空了绑定输入框的session_state键,导致无法捕获输入内容。正确思路是先保存输入内容,再清空输入框,以下是具体实现方案:

方案1:保存所有历史输入

适合需要记录用户多次输入的场景:

import streamlit as st

# 初始化存储历史输入的session_state变量
if "saved_inputs" not in st.session_state:
    st.session_state.saved_inputs = []

def save_and_clear_text():
    # 先保存当前输入内容(可选过滤空输入)
    if st.session_state.my_text.strip():
        st.session_state.saved_inputs.append(st.session_state.my_text)
    # 再清空输入框绑定的session_state键
    st.session_state.my_text = ""

# 绑定key的输入框,回车触发回调
my_text = st.text_input("Enter text here", key='my_text', on_change=save_and_clear_text)

# 展示已保存的输入内容
st.subheader("已保存的输入:")
for idx, content in enumerate(st.session_state.saved_inputs, 1):
    st.write(f"{idx}. {content}")

方案2:仅保存最新输入

适合只需要获取用户单次输入并处理的场景:

import streamlit as st

# 初始化存储最新输入的session_state变量
if "last_input" not in st.session_state:
    st.session_state.last_input = ""

def save_and_clear_text():
    # 保存当前输入
    st.session_state.last_input = st.session_state.my_text
    # 清空输入框
    st.session_state.my_text = ""

my_text = st.text_input("Enter text here", key='my_text', on_change=save_and_clear_text)

# 展示最新保存的内容
st.write("最新输入:", st.session_state.last_input)

关键说明

  • 输入框必须指定key,才能通过st.session_state[key]访问其内容
  • 回调函数中先读取输入内容再清空,避免数据丢失
  • 利用st.session_state持久化存储内容,不会因页面重绘丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:24:58