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

相关推荐

  • 架构-初识BFF

    引言 在最近的一次公司技术分享会上,我们深入探讨了公司的项目架构。核心议题是BFF架构,这是一种在微服务架构之上增加的额外层级。此外,我们还讨论了DDD(领域驱动设计)理念,它在订单、用户等业务中台中扮演着关键角色。 这是我对架构领域的初步探索,虽然理解尚浅,但我还是尝试着将所学内容进行了整理。 BFF 定义 BFF,即Backend For Fronten…

    2024 年 12 月 26 日
    43400
  • 【2024最新版】Java JDK安装配置全攻略:图文详解

    目录 1. 引言 2. 准备工作 2.1 确定操作系统 2.2 检查系统要求 2.3 下载JDK安装包 3. 安装步骤(以Windows系统为例) 4. 配置环境变量 4.1 jdk配置验证 4.2 配置JAVA_HOME环境变量 4.3 配置Path环境变量 4.4 验证jdk是否配置成功 5. 结语 1. 引言 随着技术的不断发展和更新,Java作为世界…

    2024 年 12 月 28 日
    31300
  • 深入解析 Spring AI 系列:以OpenAI与Moonshot案例为例寻找共同点

    今天,我们将重点探讨对接的业务逻辑。为了帮助大家更直观地掌握其中的规律性,我将通过对比OpenAI与《月之暗面》中的Moonshot两个案例来阐述这一点。通过这样的对比,大家可以更清晰地看到,这些对接业务的整体框架其实非常相似。换句话说,我们要做的工作只是其中的一小部分,但它同样是关键的一环。 好了,接下来我们就开始深入了解这个话题。 模型对接 我们首先需要…

    2025 年 1 月 11 日
    42900
  • python常用模块

    re模块 正则表达式符号: 表达符号 说明 . 匹配所有字符串,除\n以外 – 表示范围[0-9] * 1.匹配前面的子表达式零次或多次,匹配前面的字符0次或多次 2.re.findall(“ab*”,“cabc3abcbbac”)结果:[‘ab’, ‘ab’, ‘a’] + 匹配前面的子表达式一次或多次 ^ 匹配字符串开头 $ 匹配字符串结尾 \ 转义字符…

    未分类 2024 年 12 月 29 日
    39300
  • 促销系统:促销活动、优惠券、优惠规则概念模型设计

    大家好,我是汤师爷~ 概念模型设计是促销系统开发的关键环节,我们需要基于之前的功能分析,将复杂的促销业务拆解成清晰的领域概念,这些概念之间的关系界定和边界划分,将直接决定系统的可维护性和扩展性。 促销系统核心概念模型 通过对促销业务的分析,我们可以抽象出促销系统的关键概念模型。 1、促销活动模型 促销活动模型对活动的各个要素和规则进行抽象,包含活动名称、描述…

    2025 年 1 月 12 日
    31900

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信