I am struggling to understand why my code does not work. Am I misunderstanding something about session_state?
The code below starts fine, and I can press the button once to add text to the container. The second time I press the button I get this error message:
Bad message format
Bad ‘setIn’ index 4 (should be between [0, 2])
def write_to_container():
st.session_state.my_container.write("Hello from method")
st.button("Append to container", on_click=write_to_container)
if "my_container" not in st.session_state:
st.session_state["my_container"] = st.container(border=True)
st.session_state.my_container.write("Hello")
I don’t think that can work. You must actually call st.container() if you want a container to be there. You can do this instead:
import streamlit as st
def insert_text():
st.session_state.my_text.insert(0, "Hello from method")
if "my_text" not in st.session_state:
st.session_state.my_text = ["Hello"]
st.button("Append to container", on_click=insert_text)
with st.container(border=True):
for line in st.session_state.my_text:
st.write(line)
Thanks a lot. This works! I don’t fully understand the session_state. My attempt was able to append one time, so it did work for the first attempt. Got some reading to do on the session_state object.