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

如何在Streamlit页面切换时保留st.date_input的日期输入值

解决Streamlit date_input页面切换后重置的问题

你的代码逻辑核心问题是没有将session_state存储的日期作为date_input的默认值,导致每次页面加载时组件都用默认的当前日期渲染,无法保留之前的选择。

修正后的代码如下:

import streamlit as st
import datetime

# 初始化session_state:如果没有保存的日期,设置一个初始值(这里用当前日期,也可以改成2022年的某个日期)
if "selected_date" not in st.session_state:
    st.session_state.selected_date = datetime.date.today()

# 把session_state中保存的日期作为date_input的默认值,用户选择新日期时会自动同步到session_state
start_date = st.date_input('Select date(s)', value=st.session_state.selected_date, key="selected_date")

关键说明:

  • 先初始化session_state.selected_date,确保页面加载时总有一个可用的日期值
  • 将value=st.session_state.selected_date传给date_input,让组件渲染时读取已保存的日期
  • 指定key="selected_date"后,用户每次选择新日期,Streamlit会自动把新值同步到st.session_state.selected_date中,无需手动赋值

原来的代码逻辑颠倒了:先渲染date_input(此时用默认当前日期),再把这个临时值存到session_state,完全起不到保留选择的作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:32:22