Widget with session state varible updating every second time

Hi, I am running the following test-app on my local computer:
import streamlit as st

options = [“A”, “B”, “C”]
default = [“A”, “B”]
st.session_state.test= st.multiselect(“Test”, placeholder=“Please Select”,options=options, default=st.session_state.get(“test”, default))

The goal is to store the “test” multiselect value over multiple pages, this is working fine and I can access session_state[“test”] on other pages and the state on this page is also kept when reopening the page.

However, if I add “C” and try to delete it, I have to do it twice, same with the other options. The app is restoring the deleted value every second time.

Any suggestions, thanks in advance.

Rasmus

I will write the code like below.

import streamlit as st


options = ['A', 'B', 'C']
default = ['A', 'B']


# Create a variable to store the value of widget.
if 'test' not in st.session_state:
    st.session_state.test = default


def change_cb():
    """This is called when there is a change in multiselect widget."""
    # The value of widget is st.session_state.msk. If you change page,
    # this msk key will be lost.
    # But st.session_state.test can exist in other pages.
    # This is the reason why we pass the value of widget
    # to the value of the variable with test key.
    st.session_state.test = st.session_state.msk


st.multiselect(
    'Test',
    placeholder='Please Select',
    options=options,
    default=st.session_state.test,
    key='msk',
    on_change=change_cb
)

Cool, thanks, it is working perfect.

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