【问题标题】:Streamlit real multipage app - Can session.state from select box state synced on all pages?Streamlit 真正的多页应用程序 - 选择框状态中的 session.state 是否可以在所有页面上同步?
【发布时间】:2022-11-16 11:45:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: python streamlit multi-page-application


    【解决方案1】:

    选择框有一个索引参数来表示将显示在框中的值。我们可以用它来更新盒子。我们将使用会话状态来更新所有页面中的索引。 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}')
    

    样本

    篮球选择西班牙。

    转到排球页面。

    国家都一样!

    【讨论】:

      猜你喜欢
      • 2021-02-27
      • 2017-10-21
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2021-11-11
      • 1970-01-01
      • 2017-01-23
      相关资源
      最近更新 更多