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 |