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

相关推荐

  • 【Java】:lambda 表达式

    📃个人主页:island1314 🔥个人专栏:java学习 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 1. 背景 🚀 🔥 Lambda 表达式 是JDK8新增的特性,Lambda 表达式 可以取代大部分匿名内部类,写出更优雅的Java代码,尤其在集合的遍历和其他集合操作中,可以将函数作为一个方法的参数,也就是函数作为参数传递到方法中,极大地优化代…

    2024 年 12 月 30 日
    44900
  • MySQL

    阿里云社区https://developer.aliyun.com/mirror 目录 一:数据库 1.1 二: MySQL数据库基本操作 2.1 创建数据库: 2.2 使用某个数据库: 2.3 删除数据库: 2.4 查询支持的存储引擎 2.5 创建表: 2.6 查看表结构: 2.7 查看表结构详细信息: 2.8 删除表: 三:表的操作 3.1 修改表名字:…

    未分类 2025 年 1 月 12 日
    35300
  • Java:IO流详解

    文章目录 基础流 1、IO概述 1.1 什么是IO 1.2 IO的分类 1.3 顶级父类们 2、字节流 2.1 一切皆为字节 2.2 字节输出流 OutputStream 2.3 FileOutputStream类 2.3.1 构造方法 2.3.2 写出字节数据 2.3.3 数据追加续写 2.3.4 写出换行 2.4 字节输入流 InputStream 2.…

    未分类 2025 年 5 月 13 日
    23300
  • PostgreSQL 的特点

    title: PostgreSQL 的特点date: 2024/12/24updated: 2024/12/24author: cmdragon excerpt:PostgreSQL 是当今最流行的开源关系型数据库之一,凭借其优秀的性能、稳定性和丰富的功能集在用户群中享有极高声誉。相比于其他关系型数据库管理系统,PostgreSQL 拥有许多独特的特点,使其…

    2024 年 12 月 30 日
    42400
  • 华为OD机试E卷 –字符串变换最小字符串 –24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。 输入描述 一串小写字母组成的字符串s 输出描述 按照要求进行变换得到的…

    未分类 2025 年 1 月 12 日
    48000

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信