Streamlit多页面应用:如何同步各页面selectbox的session.state状态?
Streamlit多页面应用同步国家选择的解决方案
要实现不同运动页面间国家选择的自动同步,核心是用Streamlit的session_state跨页面共享用户选择状态——这个状态在整个用户会话中全局可用,所有页面都能读取和修改。
直接按以下方式修改每个页面里的selectbox代码即可:
# 初始化默认值,避免首次打开页面时无选中项 if 'selected_country' not in st.session_state: st.session_state.selected_country = 'France' # 渲染下拉选择框,绑定到session_state的统一键上 Host_Country = st.selectbox( 'Select HomeTeamName name:', ('France', 'Spain', 'Italy', 'England', 'Belgium', 'Portugal','Sweden'), key='selected_country', index=('France', 'Spain', 'Italy', 'England', 'Belgium', 'Portugal','Sweden').index(st.session_state.selected_country) )
关键说明:
- 所有页面的selectbox必须使用同一个key(这里是
selected_country),Streamlit会自动将选择值同步到session_state中 - 初始化步骤是为了保证用户首次打开应用时,下拉框有默认选中的国家,不会出现空值
index参数用来指定当前选中的选项,确保切换页面时,下拉框自动选中之前保存的国家
内容的提问来源于stack exchange,提问作者Beginner in the house
相关产品推荐
相关产品推荐

