| name | streamlit-6-session-state |
| description | Sub-skill of streamlit: 6. Session State (+1). |
| version | 1.0.0 |
| category | data-analysis |
| type | reference |
| scripts_exempt | true |
6. Session State (+1)
6. Session State
Managing State:
import streamlit as st
if "counter" not in st.session_state:
st.session_state.counter = 0
if "messages" not in st.session_state:
st.session_state.messages = []
st.write(f"Counter: {st.session_state.counter}")
col1, col2, col3 = st.columns(3)
if col1.button("Increment"):
st.session_state.counter += 1
st.rerun()
if col2.button("Decrement"):
st.session_state.counter -= 1
st.rerun()
if col3.button("Reset"):
st.session_state.counter = 0
st.rerun()
st.text_input("Name", key="user_name")
st.write(f"Hello, {st.session_state.user_name}!")
def on_change():
st.session_state.processed = st.session_state.raw_input.upper()
st.text_input("Raw input", key="raw_input", on_change=on_change)
if "processed" in st.session_state:
st.write(f"Processed: {st.session_state.processed}")
Form State:
import streamlit as st
with st.form("my_form"):
st.write("Submit all at once:")
name = st.text_input("Name")
age = st.number_input("Age", min_value=0, max_value=120)
color = st.selectbox("Favorite color", ["Red", "Green", "Blue"])
submitted = st.form_submit_button("Submit")
if submitted:
st.success(f"Thanks {name}! You're {age} and like {color}.")
7. Multi-Page Applications
Directory Structure:
my_app/
โโโ app.py # Main entry point (optional)
โโโ pages/
โ โโโ 1_๐_Dashboard.py
โ โโโ 2_๐_Analytics.py
โ โโโ 3_โ๏ธ_Settings.py
โโโ utils/
โโโ helpers.py
Main App (app.py):
import streamlit as st
st.set_page_config(
page_title="Multi-Page App",
page_icon="๐ ",
layout="wide"
)
st.title("Welcome to My App")
st.write("Use the sidebar to navigate between pages.")
if "user" not in st.session_state:
st.session_state.user = None
Page 1 (pages/1_Dashboard.py):
import streamlit as st
st.set_page_config(page_title="Dashboard", page_icon="๐")
st.title("๐ Dashboard")
st.write("This is the dashboard page")
if st.session_state.get("user"):
st.write(f"Welcome back, {st.session_state.user}!")
Page 2 (pages/2_Analytics.py):
import streamlit as st
st.set_page_config(page_title="Analytics", page_icon="๐")
st.title("๐ Analytics")
st.write("This is the analytics page")