繁体   English   中英

Streamlit 真正的多页应用程序 - 来自 select 框 state 的 session.state 能否在所有页面上同步?

[英]Streamlit real multipage app - Can session.state from select box state synced on all pages?

我正在构建一个小型 streamlit 应用程序,它应该通过页面显示各种主题的结果。 因此,在第 1 页上我们有篮球,在第 2 页上有排球等。选择框(下拉菜单)应该出现在每个页面上,允许用户切换国家/地区。 有没有办法让用户在即篮球页面上选择国家/地区以在排球页面上保存/应用/同步选择(当用户切换页面以自动应用选择的国家/地区时)?

我没有使用 select 框作为页面之间的方法,但有主页和模块。 体育页面位于单独的文件夹页面中。

Host_Country = st.selectbox('Select HomeTeamName name:',('France', 'Spain', 'Italy', 'England', 'Belgium', 'Portugal','Sweden'), key='country')

选择框有一个索引参数来表示将显示在框中的值。 我们可以用它来更新盒子。 我们将使用 session state 来更新所有页面中的索引。 st.session_state.country 已跟踪国家/地区值。

主程序

import streamlit as st

if 'index' not in st.session_state:
    st.session_state.index = 0

if 'countries' not in st.session_state:
    st.session_state.countries = ('France', 'Spain', 'Italy',
                                  'England', 'Belgium', 'Portugal','Sweden')

st.header('Main')

st.write('Countries')
st.dataframe(st.session_state.countries)

篮球.py

页面/baskeball.py

import streamlit as st


st.header('Basketball')

Host_Country = st.selectbox(
    label='Select HomeTeamName name:',
    options=st.session_state.countries,
    index=st.session_state.index,
    key='country')

# Update the index. It is used in the selectbox.
st.session_state.index = st.session_state.countries.index(st.session_state.country)
st.write(f'value of country: {st.session_state.country}')

排球.py

页面/volleyball.py

import streamlit as st


st.header('Volleyball')

Host_Country = st.selectbox(
    label='Select HomeTeamName name:',
    options=st.session_state.countries,
    index=st.session_state.index,
    key='country')

# Update the index. It is used in the selectbox.
st.session_state.index = st.session_state.countries.index(st.session_state.country)
st.write(f'value of country: {st.session_state.country}')

样本

Select 西班牙篮球队。

在此处输入图像描述

Go 到排球页面。

在此处输入图像描述

国家都一样!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM