How to repopulate selectbox?

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.

Hi @Albedo

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:

Hope this helps!

Thanks - appreciate the reply. I understand the answer but still working through trying to get the various controls to paint in the right order!