Streamlit 第 8 部分:状态元素

欢迎回到 **Streamlit 第 8 部分**:状态元素!在本期中,我们将深入探讨 Streamlit 提供的各种状态元素,通过在操作期间提供视觉反馈来增强应用中的用户体验。

如果您还没有这样做,您需要将 Streamlit 导入为“st”,配置您的页面,并布置框架以供后续操作。在终端中输入“streamlit run app.py”来运行该应用程序,然后我们开始吧。

实现进度条

我们要看的第一个状态元素是**进度条**。这是一种直观显示长期运行任务(如数据处理或复杂计算)进度的好方法。

要在 Streamlit 中创建进度条:

  • 定义一些要与进度条一起显示的文本。
  • 使用 st.progress() 来初始化它。
  • 创建一个 for 循环来模拟进度,添加睡眠延迟来可视化更新。
  • progress_text = "Operation in progress. Please wait."
    my_bar = st.progress(value=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(0.5)
    my_bar.empty()  # Clears the progress bar

    为了使应用程序具有交互性,请考虑添加一个**重新运行**按钮来重新加载应用程序,以便用户可以重新运行进度条。

    st.button("Rerun")

    探索地位和成功要素

    接下来是**成功栏**。这可用于显示操作成功的结果或完成情况。

    st.success("This is a status message!", icon="✅")

    这是一个简单但有效的方式,向用户展示事情进展顺利!

    使用 Spinner 进行操作

    **旋转器** 是指示后台正在运行某个程序的好方法。当您想让用户了解情况但又不阻塞界面时,这种方法尤其有用。

    with st.spinner("In progress..."):
        time.sleep(1.5)
    
    st.success("Done!")

    此代码将在“time.sleep()”函数运行时显示一个旋转器,然后在完成时显示一条成功消息。

    处理错误和警告

    要处理错误情况或警告,您可以分别使用 `st.error()` 和 `st.warning()`。这些函数可以非常轻松地清晰地传达问题。

    st.error("This is an error message!")
    st.warning("This is a warning message!")

    它们显示红色和黄色消息,使用户可以轻松区分错误和警告。

    显示信息和异常

    对于一般信息,请使用 `st.info()`。它对于在交互过程中提供信息性消息很有用。

    st.info("This is an info message!")

    此外,如果您需要显示**异常**(用于调试目的),请使用`st.exception()`。当您希望用户或开发人员了解某些事情出错的原因时,这会很方便。

    try:
        raise Exception("This is an exception!")
    except Exception as e:
        st.exception(e)

    这将显示完整的回溯,在开发过程中提供有价值的背景信息。

    气球和雪的乐趣

    Streamlit 还提供了一些奇特的功能,可以为您的应用添加有趣的效果。您可以使用**气球**和**雪**来增添一点庆祝或季节性的气氛!

  • 气球:
  • bbtn = st.button("Click me to display balloons")
    if bbtn:
        st.balloons()
  • 雪:
  • snow_btn = st.button("Click me to display snow")
    if snow_btn:
        st.snow()

    这些效果纯粹是视觉上的,但它们可以在特殊场合给你的应用增添趣味。

    结论和后续步骤

    这就是**Streamlit 第 8 部分:状态元素**!这些元素可以帮助您的用户了解幕后发生的事情,并使整体体验更具互动性。

    希望你喜欢本教程!下期再见!

    🔗 获取代码:GitHub - jamesbmour/blog_tutorials

    🔗 相关 Streamlit 教程:JustCodeIt

    🍻 支持我的工作:给我买杯咖啡