问题描述
当我更改选择框选项时重新运行脚本,我知道每个操作的流光代码都从顶部运行,并且有 2 个解决方案(缓存和 SessionState)我测试缓存它不起作用,而对于 SessionState 我不知道如何实施它
这是代码
import streamlit as st
col1,col2,col3 = st.beta_columns(3)
if col1.button("CARTE"):
st.write("Hello")
sel_Map = st.selectBox("Choose Map type :",options=['Hello1','Hello2'],index=1)
if sel_Map == 'ChoroplethMap':
st.write("Hello World! 1")
elif sel_Map == 'ChoroplethMapBox':
st.write("Hello World! 2")
if col2.button("TABLEAU"):
st.write("Hello World! 3")
if col3.button("SYNTHÈSE"):
st.write("Hello World! 4")
解决方法
我想出了如何使用 SessionState 所以结果很好,这是解决方案
import streamlit as st
from src.pages.sessionState import SessionState
session_state = SessionState.get(col1=False,col2=False,col3=False)
col1,col2,col3 = st.beta_columns(3)
col1_one = col1.button("CARTE",key="1")
col2_one = col2.button("TABLEAU",key="2")
col3_one = col3.button("SYNTHÈSE",key="3")
if col1_one or session_state.col1:
session_state.col1 = True
session_state.col2 = False
session_state.col3 = False
sel_Map = st.selectbox("Choose Map type :",options=['Hello1','Hello2'],index=1)
if sel_Map == 'Hello1':
st.write("Hello world! 1")
elif sel_Map == 'Hello2':
st.write("Hello world! 2")
if col2_one or session_state.col2:
session_state.col1 = False
session_state.col2 = True
session_state.col3 = False
st.write("Hello world! 3")
if col3_one or session_state.col3:
session_state.col1 = False
session_state.col2 = False
session_state.col3 = True
st.write("Hello world! 4")