Spaces:
Sleeping
Sleeping
import streamlit as st | |
import time | |
# 初始化会话状态 | |
if "slider_value" not in st.session_state: | |
st.session_state.slider_value = 0 | |
if "play_state" not in st.session_state: | |
st.session_state.play_state = False | |
# 定义回调函数 | |
def toggle_play(): | |
st.session_state.play_state = not st.session_state.play_state | |
if st.session_state.play_state: | |
st.session_state.slider_value = st.session_state.slider | |
# 创建播放/暂停按钮 | |
button_label = "暂停" if st.session_state.play_state else "播放" | |
st.button(button_label, on_click=toggle_play) | |
# 创建滑动条,使用key参数将其与会话状态关联 | |
slider_max = 10 | |
slider = st.slider("进度", 0, slider_max, st.session_state.slider_value, key="slider") | |
# 显示当前值 | |
st.write(f"当前值: {slider}") | |
# 如果处于播放状态,自动增加滑动条的值 | |
if st.session_state.play_state: | |
# 使用空容器来显示进度 | |
progress_container = st.empty() | |
with st.spinner("正在播放..."): | |
if st.session_state.slider_value < slider_max: | |
# 增加滑动条值 | |
st.session_state.slider_value += 1 | |
# 等待一小段时间模拟滑动过程 | |
time.sleep(0.1) | |
# 使用rerun来更新页面 | |
st.rerun() | |
else: | |
# 到达最大值时停止播放 | |
st.session_state.play_state = False |