File size: 1,389 Bytes
0bd37cc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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