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 可以容纳单个元素。当你向 st.empty 容器写入任何元素时,Streamlit 会丢弃其先前的内容并显示新元素。你也可以通过调用 .empty() 作为方法来清空 st.empty 容器。如果你想更新一组元素,可以在 st.empty 中使用普通容器(st.container())并向普通容器写入内容。根据需要重写普通容器及其内容以更新应用程序的显示。

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")
forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。