『玩转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

相关推荐

  • PyCharm最新2024永久激活码,PyCharm破解教程(Pycharm插件推荐)

    PyCharm是JetBrains公司开发的一款广受欢迎的Python集成开发环境(IDE),以其强大的功能和智能化的操作界面受到广大Python开发者的青睐。 给大家整理了PyCharm永久激活码,PyCharm破解教程,需要的直接浏览器访问: docs.qq.com/doc/DWHB5YUV6UVRWd0ZR PyCharm不仅内置了丰富的功能,还支持各…

    未分类 2024 年 7 月 31 日
    3.4K00
  • DEA永久破解教程(2024IDEA永久激活码)

    IntelliJ IDEA,一款领先的Java编程语言集成开发环境,广泛认为是顶尖的Java工具之一。本文将介绍如何使用脚本来免费激活IDEA及Jetbrains系列工具,适用于2021及之后的版本,包括最新版。 一、IDEA的安装 访问JetBrains官方网站下载IDEA的最新版。安装过程直观,按照屏幕上的步骤完成安装。 二、激活工具的下载 Window…

    未分类 2024 年 7 月 10 日
    1.6K00
  • 彻底解决Java中的`IllegalStateException`异常:实用指南与最佳实践

    在Java编程实践中,java.lang.IllegalStateException是一种典型的运行时异常,它往往暗示着程序当前所处的状态与预期操作不匹配。当某个方法被调用时,如果其前置条件未能满足,或者对象处于不适合执行该操作的状态时,系统就会抛出这个异常。本指南将深入剖析该异常的产生根源,并给出切实可行的应对策略,助力开发者有效规避和解决相关问题。 1.…

    未分类 2025 年 5 月 13 日
    45100
  • Microi 吾码与 JavaScript:前端低代码平台的强大组合

    目录 一、引言 二、Microi 吾码概述 三、JavaScript 在 Microi 吾码前端开发中的应用 (一)前端 V8 引擎与 JavaScript (二)接口引擎与 JavaScript 四、JavaScript 在 Microi 吾码后端开发中的协同 (一)与 C# 后端框架的交互 (二)利用 gRPC 实现跨语言通信 五、Microi 吾码中 …

    2025 年 1 月 12 日
    43200
  • 架构-初识BFF

    引言 晚上公司开了一个技术分享会,主要内容就是公司的项目架构,会中讲解了项目整体架构是BFF架构,就是在微服务之上多加了一层。 除此之外,还讲解了DDD设计思想,主要用于各个业务中台,如订单中台、用户中台等。 这是我的架构第一课,听得有些似懂非懂,于是浅浅地整理一下。 BFF 是什么 BFF是服务于前端的后端,全称Backend For Frontend。B…

    2025 年 1 月 1 日
    35800

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信