Fairly new to Streamlit so I may be missing something obvious, but:
I want to use a selectbox and populate it with a list, but the list is only defined AFTER the Python script starts running. (A button pulls the list from a remote resource.) I am using a sidebar to hold a menu of buttons, selectbox etc.
How can I position an empty selectbox in the sidebar when the script first runs, but only populate it subsequently? Well, I can place the selectbox easily enough, but it’s the second step of populating it later that I’m struggling with.
You can store your initial blank list as a Session State variable, then when your app populates the list which is saved to the same Session State variable, your selectbox should automatically update.
Here’s a code snippet that I wrote that should get you started:
import streamlit as st
# Generate an empty selectbox
if 'list' not in st.session_state:
st.session_state['list'] = []
selection = st.selectbox('Choose an option', st.session_state.list)
# Populate the list and selectbox updates automatically
def populate_list():
st.session_state.list = ['A', 'B', 'C']
st.button('Populate list', on_click=populate_list)
Here’s the before/after to clicking on the button: