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.
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
)