Dear all,
I got inspired by this post python 3.x - Script rerun when i change selectbox in Streamlit - Stack Overflow , trying to do the following:
I have 2 selectbox located in 2 different columns.
Once I click on ‘Calculate’, the selectbox in column 1 gets overriden by a certain value.
But I would like my script not to reset this value (rerun) and replace it by a new selectbox, when I use the other selectbox located in column 2 …
I didn’t manage to avoid the streamlit rerun when using the second selectbox after I clicked on ‘Calculate’. I’m having hard time using SessionState.
This is my code:
import streamlit as st
import pandas as pd
import SessionState
df = pd.DataFrame({‘name’: [‘steve’, ‘joe’, ‘paul’], ‘position’: [1, 2, 3]})
with st.sidebar.form(“my_form”):
calculate = st.form_submit_button(‘Calculate’)
session_state = SessionState.get(col1=False, col2=False)
col1, col2 = st.columns(2)
placeholder =
placeholder = col1.empty()
col1_one = placeholder.selectbox(‘box1’, df[‘name’].unique())
col2_one = col2.selectbox(‘box2’, df[‘name’].unique())
if col1_one or session_state.col1:
session_state.col1 = True
session_state.col2 = False
col1.write(col1_one)
if col2_one or session_state.col2:
session_state.col1 = False
session_state.col2 = True
col2.write(col2_one)
if calculate:
st.sidebar.write(‘Algo is running’)
placeholder.write(‘overriden value’)
session_state.col1 = False
session_state.col2 = True