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

Streamlit刷新按钮需点击两次才生效,如何实现单次点击刷新?

解决Streamlit单次点击Refresh按钮刷新数据的问题

问题原因

Streamlit的脚本会在每次用户交互(比如点击按钮)时从头重新执行。你的代码中,先渲染了旧数据,之后才处理按钮点击的数据更新操作,导致第一次点击按钮时,页面已经展示了旧数据,新数据要等到第二次脚本运行(第二次点击)才会显示。

修改后的代码

import streamlit as st
import pandas as pd
import numpy as np

# 从Excel读取DataFrame的函数
def read_dataframe():
    return pd.read_excel(r"E:\projects\smartscan2_1\patients_info.xlsx")

def main():
    st.title("Refresh DataFrame Example")

    # 初始化session_state中的数据
    if 'data' not in st.session_state:
        st.session_state.data = read_dataframe()

    # 先处理Refresh按钮的点击逻辑
    if st.button("Refresh"):
        st.session_state.data = read_dataframe()

    # 再显示更新后的DataFrame
    st.dataframe(st.session_state.data)

if __name__ == "__main__":
    main()

修改说明

将Refresh按钮的处理代码移到st.dataframe()之前,这样每次点击按钮时,会先完成数据的更新操作,再将最新的数据渲染到页面上,实现单次点击即可刷新数据的效果。

内容的提问来源于stack exchange,提问作者Soumya Boral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:35:02