
为什么session_state一直是没找到初始值,然后没法
if 'available_cameras' not in st.session_state:
st.session_state['available_cameras'] = self.get_camera_names()
初始化调了好几次

阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你遇到了一个问题,关于使用 session_state 在 Streamlit 中保存状态,但是发现 session_state 始终是没有找到初始值的。
问题的原因可能是 Streamlit 的 session_state 只能在一个会话中生效,如果你想要在不同的会话中保存状态,你需要使用其他方法。
一个解决方案是使用 st.session_state 的 clear 方法来清除之前的状态,然后使用 if 'available_cameras' not in st.session_state: 来检查状态是否存在。
例如:
if 'available_cameras' not in st.session_state:
st.session_state['available_cameras'] = []
这将检查 available_cameras 是否在 session_state 中,如果不存在,则创建一个空列表。
如果你想要在不同的会话中保存状态,可以使用 st.cache 函数来缓存数据。
@st.cache
def get_available_cameras():
# 你的代码来获取可用摄像头
return available_cameras
这将在每个会话中缓存 available_cameras 的值。
希望这些解决方案能够帮助你解决问题!