『玩转Streamlit』--布局与容器组件

news/2025/2/27 2:11:01/文章来源:https://www.cnblogs.com/wang_yb/p/18564468

Streamlit中,布局类组件扮演着至关重要的角色。

它们不仅决定了应用程序的视觉呈现和用户体验,也极大地增强了页面内容的组织性和可读性。

通过这些组件,开发者可以灵活地划分页面空间,创建出清晰、有条理的布局结构。

本篇主要介绍3种构建Streamlit App时常用的3种布局类组件:

  • st.container:用于封装和组合多个组件,形成统一的视觉单元
  • st.columns:将内容以并列的方式展示,提高信息展示的效率和效果
  • st.expander:提供了可折叠的面板功能,使得额外信息可以在需要时展开查看,既节省了空间又保持了界面的整洁性

1. st.container

st.container通过将多个组件放入一个容器中,可以轻松地控制这些组件的布局和样式。

st.container本身并不直接提供布局参数,一般是通过with语句将要包含的组件放入容器中,

或者,通过嵌套使用其他布局组件(如st.columnst.row等)来在容器内部实现更复杂的布局。

1.1. 使用示例

假定这样一个场景,在一个数据分析应用中,需要同时展示数据表格和相关的文字说明。

import streamlit as st
import pandas as pd# 创建示例数据
data = pd.DataFrame({"A": [1, 2, 3],"B": [4, 5, 6],"C": [7, 8, 9],}
)# 使用st.container封装数据表格和说明文字
with st.container():st.dataframe(data)st.markdown("这是数据表格的说明,提供了对数据的简要描述和分析。")

或者在一个机器学习模型演示应用中,需要同时展示模型预测结果和交互式控件(如滑块),

也可以通过st.container,将预测结果和滑块控件组合在一起,形成一个交互式的界面

# 创建一个滑块控件
slider_value = st.slider("调整滑块以查看不同结果", 0, 100)# 使用st.container封装预测结果和滑块控件
with st.container():st.write(f"当前滑块值为:{slider_value}")st.write("这是一个简单的机器学习模型演示。通过调整滑块,你可以看到不同的预测结果。")

2. st.columns

st.columns组件用于创建一个列布局的容器,它可以将页面内容分割成多个垂直排列的列。

当需要在页面上同时展示多个并列的组件或信息块时,可以考虑使用st.columns

st.columns参数很简单,它使用一个整数作为参数,该整数指定要创建的列数。

2.1. 使用示例

首先,模拟一个数据可视化应用中,需要并列展示一个折线图和相关的文字说明的场景。

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt# 创建示例数据
data = pd.DataFrame({"X": [1, 2, 3, 4, 5],"Y": [10, 15, 13, 17, 16],}
)# 绘制折线图
plt.plot(data["X"], data["Y"])
plt.xlabel("X-Axis")
plt.ylabel("Y-Axis")
plt.title("chart example")# 使用st.columns并列展示图表和文字说明
col1, col2 = st.columns(2)
col1.pyplot(plt)
col2.write("这是一个折线图示例,展示了X轴和Y轴之间的关系。")

再模拟一个数据对比的应用,需要同时展示多个数据表格以便进行比较和分析。

# 创建示例数据
data1 = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})data2 = pd.DataFrame({"A": [7, 8, 9], "B": [10, 11, 12]})# 使用st.columns创建三列布局展示数据表格
col1, col2, col3 = st.columns(3)
col1.dataframe(data1)
col2.dataframe(data2)
col3.write("这是两个数据表格的对比展示。通过并列展示,你可以更方便地进行比较和分析。")

3. st.expander

st.expander组件用于创建一个可折叠的面板,允许用户点击以展开或隐藏面板内的内容。

当需要在页面上提供额外的信息或选项,但又不希望这些信息始终可见时,可以考虑使用st.expander

st.expander将一个字符串作为参数,该字符串将作为面板的标题显示。

然后,可以在with语句块内添加要在面板中显示的组件。

3.1. 使用示例

首先模拟一个数据分析的应用,其中包含一个详细设置的面板,但默认情况下这些设置是隐藏的。

import streamlit as st# 创建一个包含详细设置的st.expander面板
with st.expander("详细设置"):st.write("这里是一些详细的设置选项,如数据过滤、排序等。")st.slider("数据过滤阈值", 0, 100)st.checkbox("启用排序功能")# 主界面内容模拟
st.write("这是一个数据分析应用的主界面。你可以点击上面的“详细设置”来查看和修改设置。")

此外,在一个比较复杂的Web应用中,如果需要提供一个包含帮助文档和指南的面板,以便用户在使用时参考。

那么,可以使用st.expander,将帮助文档和指南隐藏在一个可折叠的面板中,

用户可以在需要时查看这些信息,而不会影响主界面的展示效果。

with st.expander("帮助文档和指南"):st.markdown("""# 帮助文档和指南欢迎使用本应用!这里是一些常用的操作和技巧,帮助你更好地使用本应用。- **如何开始**:点击左侧导航栏中的“开始”按钮,进入应用主界面。- **数据导入**:在主界面上方点击“导入数据”按钮,上传你的数据文件。- **数据分析**:在数据导入后,点击“分析数据”按钮,选择你想要进行的分析类型。如有任何疑问,请联系技术支持。""")# 主界面模拟
st.write("这是一个复杂的Web应用。如果你需要帮助或指南,请点击上面的“帮助文档和指南”。")

4. 总结

3个组件在布局时的侧重点不同,其中,st.container侧重组件封装,st.columns侧重列布局,而st.expander侧重信息隐藏。

我们在使用时根据应用的具体展现形式来选择,

比如,需要组织复杂布局时则用st.container,需要并列展示信息时用st.columns,需要隐藏额外信息时用st.expander

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

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

相关文章

vue3 el-table控制列显示隐藏

TableControl.vue<!-- 表格列显示隐藏控制*** 根节点为el-table,会穿透接收组件所有属性1、通过slots接收表格列,生成勾选项2、从缓存中读取数据,匹配勾选项;3、双向绑定,勾选项。表格列使用v-if判断显示隐藏; --> <template><el-table><template v-f…

台电固态硬盘维修数据恢复

针对台电固态硬盘的维修与数据恢复问题,以下是一些建议和方法: 数据恢复 回收站恢复:如果是在电脑操作时不慎将固态硬盘里面的文件误删,且文件被删除后未进行大量写入操作(以免数据被覆盖),可以尝试通过电脑的“回收站”进行文件还原。打开桌面上的“回收站”,在里面找…

VMware 安装ubuntu 挂载共享目录

开机界面点击虚拟机“重新安装vmtools” 修改root密码sudo passwd root关闭防火墙ufw disable安装ssh sudo apt-get install openssh-server创建目录sudo mkdir /mnt/hgfs输入以下命令,如果输出了我们一开始创建的共享文件夹,那就代表你上面的设置正确了vmware-hgfsclient挂载…

js逆向实战之某二手平台请求参数加密逻辑

声明:本篇文章仅用于知识分享,不得用于其他用途 网址:https://www.goofish.com/ 加密逻辑随便点击一个模块,看触发的数据包。再选择一个模块,看哪些参数会变化。比较一下得知t和sign的值会变化。请求数据中的machId是根据所选模块变化的。 主要关注sign的加密逻辑,搜索请…

六步取消win11开机密码

0.前言 新买的电脑打开后首先要进行一系列的操作激活操作系统。在这些操作中最令人讨厌的是设置开机密码(pin)。 也许有很多人的电脑需要保密,限制别人登录,这时使用登录pin是很有必要的。而还有很多人跟我的情况差不多,台式电脑在家里使用,没有什么保密的内容。设置了开…

服务器搭建latex(overleaf)

1.领取免费服务器,推荐免费服务器(SanFengYun)见下图。2.安装宝塔面板,配置内网为127.0.0.1,访问外网地址。 3.可以在宝塔面板一键部署网站,输入自己的域名即可。 4.关键:安装docker,安装yum,设置github可以访问。 5.更换docker镜像,自带镜像无法访问 6.按照overleaf…

基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现三

超级管理员:系统管理、用户管理、拍卖者管理、拍卖商品管理等。 普通用户:注册登录、个人信息管理(个人资料、密码修改等)、竞价管理、评价等。 企业用户:注册登录、发布竞拍、竞拍管理等。 运行环境:windows/Linux均可、jdk1.8、mysql5.7、redis3.0、idea/eclipse均可。…

hhdb数据库介绍(8-3)

部署 自动部署 实现免密登录说明 免密登录需要在两台服务器之间建立免密通道,具体操作如下: 以192.168.190.186与192.168.190.187实现免密连接为例 1.在192.168.190.186的服务器上执行ssh-keygen,连续按3次回车,完成生成公钥和私钥,其中id_rsa为私钥,id_rsa_pub为公钥,到/…

AO3401A-ASEMI中低压P沟道MOS管AO3401A

AO3401A-ASEMI中低压P沟道MOS管AO3401A编辑:ll AO3401A-ASEMI中低压P沟道MOS管AO3401A 型号:AO3401A 品牌:ASEMI 封装:SOT-23 最大漏源电流:-4.2A 漏源击穿电压:-30V 批号:最新 RDS(ON)Max:0.06Ω 引脚数量:3 沟道类型:P沟道MOS管 芯片尺寸:MIL 漏电流: 恢复时间…

前端技术中对JavaScript的学习

JavaScript简历目录JavaScript简历JavaScript 是脚本语言ECMAScript 版本作用:JavaScript:直接写入 HTML 输出流JavaScript:对事件的反应JavaScript:改变 HTML 内容JavaScript:改变 HTML 图像 JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言。 JavaScript 是可…

PbootCMS后台使用编辑器的过程中,经常遇到工具栏消失的情况

后台使用编辑器的过程中,经常遇到工具栏消失的情况问题描述:后台编辑器工具栏消失。 解决方案:编辑器工具栏实际上是与后台顶部导航重叠了。修改 coreextendueditorueditor.config.js 文件,大概在 292 行,去掉 topOffset 的注释,并设置为 50。topOffset: 50备注:新版 Pb…

PbootCMS网站使用编辑器多图上传提示“后端配置项没有正常加载,上传插件不能正常使用!”

问题:PbootCMS 使用 UEditor 编辑器时,单图片上传按钮没有反应,多图片上传提示“后台配置项返回格式出错,上传功能将不能正常使用!” 解决方案:修改时间区域配置:将 controller.php 文件中的 date_default_timezone_set("Asia/chongqing"); 修改为 date_defau…