In my project, after clicking the button, it becomes possible to select items in the multiselect widget. But when I select any item, the multiselect widget immediately disappears.
How do I make the multiselect widget not disappear?
if st.button('Button'):
options = st.multiselect('Choose letter', ['a', 'b', 'c'])
st.write(options)
Buttons don’t retain state. They return True on the page load resulting from their click and immediately go back to False. If you nest a widget inside a button, then as soon as you interact with that nested widget, the page reloads with the button being False. Hence the nested widget doesn’t render.
Here’s a blog post with some options to nest inside buttons:
import streamlit as st
if 'clicked' not in st.session_state:
st.session_state.clicked = False
def set_clicked():
st.session_state.clicked = True
st.button('Button', on_click=set_clicked)
if st.session_state.clicked:
options = st.multiselect('Choose letter', ['a', 'b', 'c'])
st.write(options)