Streamlit下载按钮点击后触发进度条显示问题求助
Streamlit下载按钮点击后触发进度条实现方案
你的问题出在进度条逻辑是页面加载时就直接执行的,没有和下载按钮的点击事件绑定。要实现点击下载按钮后再初始化进度条,只需把进度条相关代码放在st.download_button的返回值判断里——该按钮被点击时会返回True,以此作为触发条件。
修改后的代码如下:
import time import streamlit as st text = "示例文本内容" # 替换为你实际要下载的文本内容 # 将进度条逻辑绑定到下载按钮的点击事件 if st.download_button( label="Download Text", data=text, file_name='Sample.txt' ): progress_text = "Operation in progress. Please wait." my_bar = st.progress(0, text=progress_text) for percent_complete in range(100): time.sleep(0.01) my_bar.progress(percent_complete + 1, text=progress_text) time.sleep(1) my_bar.empty() st.button("Rerun")
关键说明
st.download_button的返回值为布尔类型,点击按钮时返回True,否则返回False,通过这个判断可以精准控制进度条代码的执行时机。- Streamlit脚本会在每次用户交互时重新运行,这个逻辑能确保只有点击下载按钮时才触发进度条动画,页面加载阶段不会提前显示进度条。
内容的提问来源于stack exchange,提问作者Thiziri
相关产品推荐
相关产品推荐

