with tab1: st.header("A cat") st.image("https://static.streamlit.io/examples/cat.jpg", width=200) with tab2: st.header("A dog") st.image("https://static.streamlit.io/examples/dog.jpg", width=200) with tab3: st.header("An owl") st.image("https://static.streamlit.io/examples/owl.jpg", width=200)
控件中的 key 的应用
Key 是为了区分组件的键。如果空间名称完全相同就会报错,需要用 key 进行区分。
Fragment 局部刷新
Streamlit 默认是全页刷新,通过@st. Fragment 装饰器,可以实现实现局部刷新的效果。
1 2 3 4 5 6 7 8 9 10 11 12
import streamlit as st import time
@st.fragment defrelease_the_balloons(): st.button("Release the balloons", help="Fragment rerun") st.balloons()
with st.spinner("Inflating balloons..."): time.sleep(5) release_the_balloons() st.button("Inflate more balloons", help="Full rerun")
Session State
Session State 是 Streamlit 提供的一种机制,用于在用户会话之间保持变量的状态。在 Web 应用中,通常每个用户的请求都是独立的,这意味着每次刷新页面或导航到新页面时,变量的状态都会丢失。然而,在某些情况下,我们希望某些变量的状态能够在用户的整个会话期间保持不变,这就是 Session State 发挥作用的地方。
示例 1:简单的计数器
这个示例展示了一个简单的计数器,用户每次点击按钮时,计数器的值会增加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import streamlit as st
# 初始化 session state if'counter'notin st.session_state: st.session_state.counter = 0
defcheck_form_valid(): vals = respond_info.values() returnall([Trueif val notin [None, ""] elseFalsefor val in vals ])
# check format if form_submitted: ifnot check_form_valid(): st.warning("Please fill in all form values!") else: # st.balloons() st.write("form submitted!")