如何在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
相关产品推荐
相关产品推荐

