You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 22:18:10