I’ve got a functioning App using widgets such as button, checkbox, selectbox. Using SessionState and get_session()` to track each sessions variables, along with a reset button to reset the selected variables.
I also prefil the selectbox options upon opening the page in App from an API. This allows the most up-to-date selections available to the App. When i added this, i started to see stange behavior which previous selected boxes would be wiped out. I tried many different variations, including caching, and nothing seems to work. Below is code to help show the structure.
from .. import SessionState def get_session(): session = SessionState.get( run_id=0, user="", opportunity_id="", customer_name="", all_opps=None) # this is the API call to get list for selectbox def get_opportunity_list(session): df = get_opps() return tuple([''] + list(df['opp_display'])) def write(): session = get_session() if session.all_opps is None or len(session.all_opps) == 0: st.write('Getting refreshed Opporunity List') session.all_opps = get_opportunity_list(session) else: st.write('Using cached Opportunity List', session.customer_name) opps_list = session.all_opps if opps_list is not None: st.write('len of all opps', len(opps_l)) session.customer_name = empty_opportunity_id.selectbox( 'Opportunity ID', opps_list, key=session.run_id) session.uploaded_file = empty_uploaded_file.file_uploader( "Upload XLS", type="xlsx", key=session.run_id ) # i strangly lose this value, if I check it True, it flips back to False after I selected others session.consol_rating = empty_consol_rating.checkbox( "Add Consolidation Rating", False, key=session.run_id)