Animate and update elements
有时你显示一个图表或数据框,并希望在应用程序运行时实时修改它(例如,在循环中)。一些元素具有内置方法,允许你在不重新运行应用程序的情况下就地更新它们。
可更新的元素包括以下内容:
st.empty容器可以按顺序写入,并且总是显示最后写入的内容。它们也可以通过像方法一样调用的额外.empty()来清除。st.dataframe,st.table和许多图表元素可以通过.add_rows()方法更新,该方法用于追加数据。st.progress元素可以通过额外的.progress()调用来更新。它们也可以通过.empty()方法调用来清除。st.status容器有一个.update()方法,用于更改它们的标签、展开状态和状态。st.toast消息可以通过额外的.toast()调用来更新。
st.empty containers
st.empty 可以容纳单个元素。当你向 st.empty 容器写入任何元素时,Streamlit 会丢弃其先前的内容并显示新元素。你也可以通过调用 .empty() 作为方法来清空 st.empty 容器。如果你想更新一组元素,可以在 st.empty 中使用普通容器(st.container())并向普通容器写入内容。根据需要重写普通容器及其内容以更新应用程序的显示。
The .add_rows() method
st.dataframe, st.table, 以及所有图表函数都可以使用其输出上的.add_rows()方法进行修改。在下面的示例中,我们使用my_data_element = st.line_chart(df)。你可以尝试用st.table, st.dataframe, 以及大多数其他简单图表来替换st.line_chart来尝试这个示例。请注意,st.dataframe默认只显示前十行,并为额外的行启用滚动。这意味着添加行不像st.table或图表元素那样直观。
import streamlit as st
import pandas as pd
import numpy as np
import time
df = pd.DataFrame(np.random.randn(15, 3), columns=(["A", "B", "C"]))
my_data_element = st.line_chart(df)
for tick in range(10):
time.sleep(.5)
add_df = pd.DataFrame(np.random.randn(1, 3), columns=(["A", "B", "C"]))
my_data_element.add_rows(add_df)
st.button("Regenerate")
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。