『玩转Streamlit』--交互类组件

news/2024/11/19 8:39:56/文章来源:https://www.cnblogs.com/wang_yb/p/18554142

交互类组件Web应用程序中至关重要,它们允许用户与应用进行实时互动,能够显著提升用户体验。

用户不再只是被动地接收信息,而是可以主动地输入数据、做出选择或触发事件,从而更加深入地参与到应用中来。

此外,对于某些复杂的任务或操作,交互类组件可以将其分解成一系列简单的步骤或选择,从而降低用户的认知负担和学习成本

。这使得用户能够更轻松地完成这些任务,提高应用的易用性。

Streamlit中交互类组件有很多,本篇介绍其中最常用的几种,这也是Web页面中最常见到的几种组件。

  • st.text_input:允许用户输入文本,用于收集用户输入的字符串信息。
  • st.button:提供一个可点击的按钮,用户点击后触发特定操作或事件。
  • st.selectbox:显示下拉列表,让用户从预设选项中选择一个。
  • st.multiselect:提供下拉多选功能,允许用户从预设选项中选择多个。
  • st.radio:显示单选按钮组,让用户从多个选项中选择一个。
  • st.checkbox:提供复选框,让用户选择或取消选择特定选项。

1. 组件概述

1.1. st.text_input

用于输入普通文本或者密码,类似于HTML中的<input type="text">

核心的参数有:

名称 类型 说明
label str 输入框前面的标签
key str 唯一标识此输入框的键,可用于在回调中引用
value str 输入框的初始值
type str 输入类型,可以是"default"(默认)或者"password"(密码)

1.2. st.button

提供一个按钮用来出发特定事件,类似于HTML中的<button>

核心的参数有:

名称 类型 说明
label str 按钮上的文字
key str 唯一标识此按钮的键
help str 按钮旁边的帮助文本

1.3. st.selectbox

下拉选择框,类似于HTML中的<select>

核心的参数有:

名称 类型 说明
label str 下拉框前面的标签
key str 唯一标识此下拉框的键
options list 下拉框中的选项列表
index int 初始选中项的索引

1.4. st.multiselect

可以多选的下拉选择框,类似于HTML中的<select multiple>

核心的参数有:

名称 类型 说明
label str 多选框前面的标签
key str 唯一标识此多选框的键
options list 多选框中的选项列表
default list 默认选中的选项列表

1.5. st.radio

单选按钮组,类似于HTML中的<input type="radio">

核心的参数有:

名称 类型 说明
label str 单选按钮组前面的标签
key str 唯一标识此单选按钮组的键
options list 单选按钮组中的选项列表
index int 初始选中项的索引

1.6. st.checkbox

复选框,类似于HTML中的<input type="checkbox">

核心的参数有:

名称 类型 说明
label str 复选框旁边的标签
key str 唯一标识此复选框的键
value bool 复选框的初始状态(选中或未选中)

2. 组件使用示例

下面通过从实际场景中简化而来的示例,来看看如何使用Streamlit的交互类组件。

2.1. "用户偏好调查"示例

这个示例模拟了一个真实的用户调查场景,

通过Streamlit的交互式组件,用户可以轻松地输入和选择信息,并提交给应用进行处理和显示。

import streamlit as st# 标题
st.title("用户偏好调查")# 文本输入框:收集用户名
username = st.text_input("请输入您的姓名:")# 下拉单选框:选择性别
gender = st.selectbox("请选择您的性别:", ["男", "女", "其他"])# 下拉多选框:选择兴趣爱好
hobbies = st.multiselect("请选择您的兴趣爱好:", ["阅读", "运动", "旅行", "音乐", "电影"]
)# 单选按钮组:选择喜欢的颜色
favorite_color = st.radio("请选择您喜欢的颜色:", ["红色", "蓝色", "绿色", "黄色"])# 复选框:是否同意接收推送
accept_push = st.checkbox("您是否同意接收推送消息?")# 按钮:提交调查
if st.button("提交调查"):# 收集所有输入信息并显示user_info = {"姓名": username,"性别": gender,"兴趣爱好": ", ".join(hobbies),"喜欢的颜色": favorite_color,"是否同意接收推送": "是" if accept_push else "否",}st.subheader("您的调查信息如下:")st.write(user_info)

2.2. "数据分析项目仪表板"示例

这个示例模拟了一个数据分析项目的仪表板,

通过Streamlit的交互式组件,用户可以轻松地与数据进行交互,选择他们感兴趣的分析方式,并查看和下载分析结果。

import streamlit as st
import pandas as pd
import numpy as np# 假设数据集
data = pd.DataFrame({"日期": pd.date_range(start="2023-01-01", periods=100, freq="D"),"类别": np.random.choice(["A", "B", "C"], 100),"销售额": np.random.randint(100, 1000, 100),"利润": np.random.randint(10, 100, 100),}
)# 标题
st.title("数据分析项目仪表板")# 文本输入框:输入项目名称
project_name = st.text_input("请输入项目名称:")# 下拉单选框:选择分析类别
analysis_category = st.selectbox("请选择分析类别:", data["类别"].unique())# 下拉多选框:选择显示的列
display_columns = st.multiselect("请选择要显示的列:", data.columns)
selected_data = data[display_columns]# 单选按钮组:选择汇总方式
agg = st.radio("请选择汇总方式:", ["总和", "平均值", "最大值", "最小值"])
agg_dict = {"总和": "sum","平均值": "mean","最大值": "max","最小值": "min",
}# 复选框:是否按类别汇总
group_by_category = st.checkbox("是否按类别汇总?")# 按钮:执行分析
if st.button("执行分析"):# 根据用户选择进行分析if group_by_category:grouped_data = (selected_data.groupby("类别").agg({col: agg_dict[agg] for col in selected_data.columns if col != "类别"}).reset_index())else:grouped_data = (selected_data.agg({col: agg_dict[agg] for col in selected_data.columns}).to_frame().T)# 显示分析结果st.subheader("分析结果:")st.dataframe(grouped_data)

3. 总结

总之,这些交互式组件使得用户可以通过文本输入、选择、勾选等方式与应用进行互动,从而根据用户需求动态地展示和分析数据。

它们极大地增强了应用的灵活性和用户体验,使得数据分析、数据可视化等任务变得更加直观和便捷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jfinal框架运行时,端口号被占用

下载完Jfinal后按照启动说明,发现出现端口号被占用的问题 我们只需要去undertow.txt文件里面寻找undertow.port=80将修改成undertow.port=8080就可以运行成功了

Rust 的静态网站生成器「GitHub 热点速览」

如果你做过个人博客网站,那么一定对静态网站生成器不陌生。无论是 Ruby 语言的 Jekyll、Go 语言的 Hugo、还是基于 React 的 Gatsby,这些工具都有庞大的用户群体。对于喜欢的人来说,它们是无可替代的神器,而对于不喜欢的人,则可能难以“下咽”。正如俗话所说,“萝卜青菜,…

Mysql篇-语句执行计划详解(explain)

概述 使用 explain 输出 SELECT 语句执行的详细信息,包括以下信息:表的加载顺序 sql 的查询类型 可能用到哪些索引,实际上用到哪些索引 读取的行数Explain 执行计划包含字段信息如下:分别是 id、select_type、table、partitions、type、possible_keys、key、key_len、ref、…

永宏BI-设置报告全屏自适应

制作报告 - 查看 -自适应设置全屏自适应查看报告 - 演示 - 手动演示 即可全屏展示

Ubuntu-22.04 挂载磁盘

查看系统磁盘情况 fdisk 或者 lsblk -f新建挂载磁盘名称,类似于windows的盘符。例如我们新建一个 data,专门存放生产数据 cd / mkdir data 确保sdb盘新盘或者数据已备份,格式化sdb盘为ext4格式 sudo mkfs -t ext4 /dev/sdb 手动挂载 sudo mount /dev/sdb /data 查看磁盘挂载…

项目UML图(2)

1.用例图2.类图3.时序图

读数据质量管理:数据可靠性与数据质量问题解决之道08扩展异常检测

扩展异常检测1. Python和机器学习扩展异常检测 1.1. 机器学习有助于大规模数据可观测性和数据监控1.1.1. 配备了机器学习的检测器可以更灵活地应用到更多的数据表上,从而消除了随着数据仓库或数据湖的增长进行手动检查和手动操作的需要1.1.2. 机器学习检测器可以实时学习和适应…

笼统的数据处理

通常来说,根据数据类型可以将编程语言分为两类:强类型语言强类型语言(Strongly typed language)不仅强制要求事先声明变量,还要求声明每个变量的数据类型,这样编译器就能准确地知道这个变量中的值的类型。强类型语言在数据类型上要求很严格:必须事先说明变量中存放的数据…

GitLab私有仓库概述及环境部署

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.gitlab概述1.gitlab介绍2.gitlab架构3.gitlab推荐配置二.部署gitlab前准备1.ubuntu系统环境安装前准备1.1 配置Ubuntu主机名1.2 配置Ubuntu远程链接1.3 配置ubuntu仓库1.4 修改终端颜色1.5 重启虚拟机…

RHEL8.10上搭建dhcp-relay服务

日期:2024.11.17 目的:在rhel8上搭建dhcp-relay服务,让搭建在lan网段(10.31.0.0/24)中的DHCP服务器rocky9(10.31.0.1/24),可以给dmz网段(172.31.0.0/24)中的主机提供服务 参照:鸟哥Linux私房菜 https://linux.vbird.org/linux_server/rocky9/0220dhcp_ntp.php#9.3 3…

ROCKY9.4上搭建DHCP服务

日期:2024.11.14 内容:在虚拟的LAN网络中(10.31.0.0/24)的ROCKY9.4(10.31.0.1/24)上搭建DHCP服务器,供LAN网络中其余主机自动获取IP地址 参照:鸟哥Linux私房菜 马哥教育王晓春老师课程安装DHCP服务 [root@ROCKY9 ~]# dnf info dhcp-server Last metadata expiration check:…

dyld: 神秘的 __dso_handle

dyld: 神秘的 __dso_handleiOS动态链接器dyld中有一个神秘的变量__dso_handle: // dyld/dyldMain.cpp static const MachOAnalyzer* getDyldMH() { #if __LP64__// 声明 __dso_handleextern const MachOAnalyzer __dso_handle;return &__dso_handle; #else... #endif // __…