File size: 916 Bytes
b279884 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | from __future__ import annotations
from collections.abc import Sequence
import streamlit as st
def remembered_segmented_control(
label: str,
*,
options: Sequence[str],
key: str,
remember_key: str | None = None,
default: str | None = None,
label_visibility: str = "visible",
) -> str:
"""Render a segmented control with one small, reusable memory pattern."""
fallback = default or options[0]
remembered = st.session_state.get(
remember_key,
st.session_state.get(key, fallback),
)
selected = (
st.segmented_control(
label,
options=options,
default=remembered if remembered in options else fallback,
key=key,
label_visibility=label_visibility,
)
or fallback
)
if remember_key is not None:
st.session_state[remember_key] = selected
return selected
|