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
相关产品推荐
相关产品推荐

