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