『玩转Streamlit』–片段Fragments

在开发 Streamlit 应用时,Fragments 组件是一种强大的工具,它允许开发者以更精细的方式控制页面元素的更新和显示顺序。通过将内容划分为多个小片段,开发者可以按照特定的顺序或逻辑逐一更新这些片段,而不是一次性更新整个页面或容器中的所有内容。这种方法为创建动态且具有高度交互性的用户界面提供了额外的灵活性和控制力。

1. 概述

Fragments 的概念类似于 Web 2.0 时代的 Ajax 技术,它能够将页面内容分解成多个小片段,类似于将一幅完整的画作分割成多个小拼图。这样做的优势在于,Fragments 可以对更新操作进行细分,仅更新部分内容,从而提升页面的响应速度。本质上,它为开发者在构建动态、交互性强的应用界面时,提供了更高的灵活性和精准的内容控制能力。

使用 Fragments 组件时,通常通过 st.fragment 装饰器来编写小片段,后续将通过示例进行演示。

参数说明

名称 类型 描述
func 函数对象 将其转换为片段的函数,由 @st.fragment 装饰器装饰的函数
run_every 整数、浮点数、时间间隔、字符串或None None (默认值):片段仅在用户触发事件时重新运行。
整数或浮点数:指定以秒为单位的时间间隔,例如5表示每5秒自动重新运行片段。
字符串:指定时间格式,如"1d"(1天)、"1.5 days"(1.5天)或"1h23s"(1小时23秒),该格式被 Pandas 的 Timedelta 构造函数支持。
timedelta对象(来自 Python 的内置 datetime 库):如 timedelta(days=1) 表示每天自动重新运行片段。

2. Fragments 与 Form 区别

Fragments 和之前介绍的 Form 在外观上可能相似,都是将多个相关的组件组织起来,统一更新和管理。然而,它们的应用场景和工作方式有很大的不同。了解这些区别可以帮助我们更好地选择适合的组件。

2.1. 主要用途

用途上来看,Fragments 主要用于:

  • 引导式内容展示:创建引导性的应用界面,逐步展示信息。例如,在数据分析应用的教程中,先使用 Fragments 展示数据加载的步骤,然后再展示数据分析方法的介绍。
  • 优化页面更新性能:在处理大量数据或复杂 UI 更新时,Fragments 可以将更新操作拆分成多个小片段更新。每次只刷新必要的部分,提高应用的响应速度。例如,在实时数据监控应用中,使用 Fragments 可以分别更新不同数据图表的部分,而不是一次性更新整个页面的所有图表。
  • 构建复杂交互逻辑:对于具有复杂交互逻辑的应用,Fragments 能够帮助组织和控制页面元素的显示与隐藏。例如,在多步骤的操作流程应用中,通过 Fragments 管理每个步骤中不同操作按钮和提示信息的显示和隐藏。

Form 则主要用于:

  • 数据收集:主要用于收集用户输入的数据。这可以是简单的文本信息,也可以是复杂的选择,如在一个产品配置表单中,用户通过下拉菜单选择产品型号、颜色等选项。
  • 数据验证和提交:表单通常包含数据验证机制,以确保用户输入的数据符合要求。并且,表单提供了提交功能,将收集到的用户数据发送到服务器或者进行本地处理。

2.2. 工作方式

从组件的工作方式来看,Fragments 本身并不具有像表单那样固定的结构。它更像是一个容器,可以容纳各种 Streamlit 组件,如文本、按钮、图表等。可以通过代码逻辑来控制这些组件在 Fragments 中的显示顺序和条件。

表单 具有比较明确的结构,通常包含 form 标签(在 HTML 层面)和一系列的输入组件,如 st.text_inputst.selectbox 等。表单中的所有输入组件通常是相互关联的,它们共同构成了一个数据收集单元。而且,表单可以通过 st.form_submit_button 来触发提交操作,并且可以使用 st.form 上下文管理器来确保表单内的组件数据在提交时能够正确地一起处理。

2.3. 数据处理

数据处理方面,Fragments 相对灵活。例如,在一个包含多个 Fragments 的应用中,每个 fragment

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4311.html

(0)
LomuLomu
上一篇 2024 年 12 月 24 日 下午4:28
下一篇 2024 年 12 月 24 日 下午5:02

相关推荐

  • manim边做边学–动画更新

    今天介绍Manim中用于动画更新的3个类 ,分别是: UpdateFromFunc:根据自定义的函数来动态更新 Mobject 的属性 UpdateFromAlphaFunc:根据动画的进度来平滑地改变 Mobject 的属性 MaintainPositionRelativeTo:保持多个 Mobject 之间的相对位置关系 这3个类 分别从自定义更新、基于…

    2025 年 1 月 12 日
    43600
  • 一问一答学习PyQT6,对比WxPython和PyQt6的差异

    在我的基于WxPython的跨平台框架完成后,对WxPython的灵活性以及强大功能有了很深的了解,在跨平台的桌面应用上我突然对PyQt6的开发也感兴趣,于是准备了开发环境学习PyQt 6,并对比下WxPython的差异来进行深入的了解,发现它们很多理念和做法是如此的类似。 1、pyqt6都有那些布局控件? PyQt6 提供了多种布局控件,帮助开发者轻松地将…

    2025 年 1 月 14 日
    25400
  • WebScoket-服务器客户端双向通信

    WebScoket学习笔记 1. 消息推送常用方式介绍 轮询 浏览器以指定的时间间隔向服务器发出HTTP请求,服务器实时返回数据给浏览器。 长轮询 浏览器发出ajax请求,服务器端接收到请求后,会阻塞请求直到有数据或者超时才返回。 SSE server-sent-event:服务器发送事件 SSE是在服务器和客户端之间打开一个单向通道,服务器通向客户端。 服…

    2025 年 1 月 16 日
    35000
  • 《动态演进架构(第二版)》电子版获取指南

    书籍概要 这本专业著作系统阐述了架构适应性评估体系、智能化架构管理方案以及数据动态演进的前沿方法与实践经验。全书采用三模块结构:首模块着重解析动态架构的核心机制——详细说明开发团队如何运用技术手段构建适应性评估模型、自动化部署流程等现代化软件项目管理工具;次模块聚焦架构模式与设计准则,深入探讨组件耦合度、功能复用性等关键要素,为构建可持续优化的系统架构提供专…

    2025 年 5 月 14 日
    14300
  • Python数据结构与算法分析 第3版PDF、EPUB免费下载

    适读人群 :1. 希望学习数据结构和算法的Python用户; 2. 计算机专业的学生和老师。 只有洞彻数据结构与算法,才能真正精通Python!热门计算机科学教材,华盛顿大学、北京大学等多家高校采用,让你在代码编写的战场上所向披靡! 电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: [美] 布拉德利·…

    2025 年 1 月 7 日
    60100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信