Hello there! Is there a way I can set the value of a selectbox on the press of a button?
Thamkss
cols = st.columns([1, 2])
search = cols[0].selectbox('', options, key='search_1')
if cols[1].button('set'):
# ? set selectbox value to (say) options[0]
With the session state release, this should be possible. Something along the lines of (untested code):
cols = st.columns([1, 2])
# when you create the selectbox with a key it automatically tracks it in the session state
search = cols[0].selectbox('', options, key='search_1')
if cols[1].button('set'):
# call search_1 in session state and set it
st.session_state.search_1 = options[0]
Thamks @Marisa_Smith for the reply.
The code seems nice, but i get this error ‘StreamlitAPIException: st.session_state.search_1 cannot be modified after the widget with key search_1 is instantiated.’
Oops! Sorry! I was coding from my phone and I mixed up the order of those
It should look like this:
cols = st.columns([1, 2])
if cols[1].button('set'):
# call search_1 in session state and set it
st.session_state.search_1 = options[2]
# when you create the selectbox with a key it automatically tracks it in the session state
search = cols[0].selectbox('', options, key='search_1')
You shouldn’t need to initialize search_1 unless you intend to access it or change its state before its first render!