Multiselect disappears

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)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.