『玩转Streamlit』--页面布局

news/2025/1/17 3:54:44/文章来源:https://www.cnblogs.com/wang_yb/p/18516928

一个优秀的数据应用不仅仅是功能的强大,更在于其用户体验的打造。

而良好的页面布局,作为用户体验的重要组成部分,不仅能够提升信息的可读性,还能引导用户高效地完成操作。

反之,混乱的布局会让人感到困惑和挫败,甚至导致用户放弃使用应用。

Streamlit中,Sidebar(侧边栏)、Columns(列布局)和Tabs(标签页)是三个至关重要的布局组件,它们各自有不同的使用场景,共同构成了应用界面的骨架。

1. 侧边栏 st.sidebar

Sidebar(侧边栏)在Streamlit应用中主要是导航作用。

Sidebar通常位于应用界面的左侧或右侧,它的优势在于,既不会占用主内容区域的空间,又同时保持了对关键功能的即时访问,特别适用于那些需要频繁切换功能或具有多层导航结构的应用。

Sidebar不是菜单,一般不用于页面的切换,它的里面可以包含其他的组件。

下面构建一个简化的数据分析场景,演示Sidebar的使用方法。

我们在Sidebar中设置需要选择的数据集和数据分类(分为测试集验证集),

然后在主页面中获取选择的数据集和数据分类,只实现操作数据的功能。

# 侧边栏中选择数据集
dataset = st.sidebar.selectbox("选择数据集?",("手写数字数据","房屋成交数据","股市交易数据",),
)# 侧边栏中选择数据分类
data_type = st.sidebar.radio("数据分类: ",("测试集", "验证集", "所有数据"),
)# 右侧页面中的模拟操作
st.title(f"数据集: {dataset}")
st.divider()
st.write(f"数据分类: 【{data_type}】")
st.write(f"TODO!!!: 操作数据的功能")

2. 列布局 st.columns

Columns布局,即列布局,是一种将页面内容分割成多个垂直排列的列,以便更有效地展示信息的布局方式。

这种布局方式不仅提升了页面的视觉吸引力,还显著增强了用户体验,使得信息获取更加直观和便捷。

Streamlit中,可以使用st.columns函数来创建列布局。

这个函数接受一个列表作为参数,列表中的每个元素都是一个函数,代表一列的内容。

Streamlit会按照列表的顺序和长度来渲染列。

比如,我们构造一个数据分析的示例,分3列展示内容,

  • 第一列模拟选择数据
  • 第二列模拟一些配置信息
  • 第三列根据配置模拟绘制图形
# 绘图的类型放在session中
if "graph" not in st.session_state:st.session_state.graph = ""# 第一列
def column_1():st.header("1. 选择数据")st.selectbox("选择数据集?",("手写数字数据","房屋成交数据","股市交易数据",),)# 随机模拟的数据data = pd.DataFrame(np.random.randn(5, 3), columns=["A", "B", "C"])st.table(data)def column_2():st.header("2. 配置数据")graph = st.radio("图形类型: ",("折线图", "柱状图", "散点图"),)st.session_state.graph = graphdef column_3():st.header("3. 绘制图形")chart_data = pd.DataFrame(np.random.randn(20, 3), columns=["A", "B", "C"])if st.session_state.graph == "散点图":st.scatter_chart(chart_data)if st.session_state.graph == "折线图":st.line_chart(chart_data)if st.session_state.graph == "柱状图":st.bar_chart(chart_data)col1, col2, col3 = st.columns(3)with col1:column_1()with col2:column_2()with col3:column_3()

3. 标签页 st.tabs

Tabs组件的主要用途在于将复杂的信息结构分解为多个独立的、可切换的部分,每个部分(或称为“标签页”)都包含相关的内容或功能。

这种设计方式有助于减少用户在同一时间内需要处理的信息量,避免界面过载,同时也便于用户快速找到所需内容。

同样是上面的例子,如果数据的字段很多,配置数据的项目也很多,那么上面的Columns布局就显得很拥挤,

这时,用Tabs布局更好,代码调整很简单。

tab1, tab2, tab3 = st.tabs(["1. 选择数据", "2. 配置数据", "3. 绘制图形"])with tab1:tab_1()with tab2:tab_2()with tab3:tab_3()

上面函数tab_1()tab_2()tab_3()中的代码和Columns布局示例中的column_1()column_2()column_3()代码基本一样。

随着Columns布局的每个Columns内容逐渐增多时,可以考虑改用Tabs布局。

4. 总结

总之,这三种布局方式各有千秋,选择哪种布局取决于应用的具体需求、用户习惯以及设计目标。

Sidebar(侧边栏)提供持续可见的导航菜单,适合功能繁多或需频繁切换的应用,帮助用户快速定位所需功能,同时保持主内容区域的清晰。

Columns(列布局)则通过分割界面为多个并列区域,实现图文混排或数据报表的灵活展示。

它提高了信息密度,使得用户能够在同一视图中获取更多信息,适用于需要同时展示多种数据类型或视图的场景。

Tabs(标签页)将内容划分为多个独立的、可切换的部分,每个部分包含相关功能或信息。

它有助于节省屏幕空间,同时帮助用户对信息进行逻辑分组,提高信息检索效率。

Tabs适用于功能或信息分类明确,且用户可能需要根据不同需求切换查看的应用。

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

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

相关文章

# 20222322 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实验内容 1.1实验内容 (1) 使用msfvenom和msf编码器生成文件使用msfvenom生成exe文件,并进行编码。 生成jar文件,用于Java环境下的攻击。 生成PHP文件,用于Web服务器上的攻击。(2) 使用Veil工具生成恶意代码下载并安装Veil-Evasion,使用Veil生成恶意代码。(3) 使用C+shel…

高级程序语言课程第五次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13298 姓名:刘嘉奕 学号:102400204停止输入进行运算用ctrl+z打印\n用\n8.5语句循环逻辑错误8.7用字符代替数字选项,用q代替5结束…

SQL Server创建用户只能访问指定数据库和视图

我们在给数据库用户赋予权限时,有时候不想让该用户看到太多过程表和过程视图,这时就需要限定用户的访问权限 第一步:创建用户 创建数据库连接后,进入安全性——登录名,单击右键,新建登录名,并设置默认数据库第二步:设置用户映射 点击用户映射,勾选指定要访问的数据库,…

更安全高效的文件传输工具,Ftrans国产FTP替代方案可以了解!

文件传输协议(FTP),诞生于1971年,自20世纪70年代发明以来,FTP已成为传输大文件的不二之选。内置有操作系统的 FTP 可提供一个相对简便、看似免费的文件交换方法,因此得到广泛使用。 随着企业发展过程中新增的文件传输需求,FTP的局限性开始凸显,企业都在寻求国产FTP替代…

CentOS查看磁盘IO使用率

Linux命令iostat -x 1最后一列%util为磁盘IO使用百分比

AI绘画漫谈——从AI网页生成说起

1. 又说“前端已死” 为什么说“又”呢?因为前两年我在一些博客网站三天两头就能看到这个标题,虽然今年好像换话题了,但感觉前端每年都要死个七八次,当然这里面还是标题党偏多,不过也体现了有一些开发者对自己当前所做的工作内容的忧虑,尤其是这一次冲击的浪潮是来自于 A…

对象一定分配在堆中吗?聊聊TLAB和逃逸分析技术

TLAB TLAB是虚拟机在堆内存的eden划分出来的一块专用空间,是线程专属的。在虚拟机的TLAB功能启动的情况下,在线程初始化时,虚拟机会为每个线程分配一块TLAB空间(包含在 Eden 空间内),只给当前线程使用,这样每个线程都单独拥有一个空间,如果需要分配内存,就在自己的空间…

Metasploit Pro 4.22.5-2024102801 发布下载,新增功能简介

Metasploit Pro 4.22.5-2024102801 发布下载,新增功能简介Metasploit Pro 4.22.5-2024102801 发布下载,新增功能简介 Metasploit Pro 4.22.5-2024102801 (Linux, Windows) - 专业渗透测试框架 2024 年 10 月 28 日,版本 4.22.5-2024102801 请访问原文链接:Metasploit Pro 4…

Qt/C++地图导航app/支持qml/手机运行/输入起点终点规划路径/模拟轨迹移动

一、前言说明 搞Qt地图开发这块,随着研究的深入,用户的需求变化,最近又需要在手机上运行,由于本地图组件依赖浏览器控件,而手机安卓上的Qt并没有带qwebengine控件,怎么办呢,不断的努力验证下,发现Qt安卓上提供了webview控件可以加载网页,而webview在安卓上只能用qml,…

别再忽视!PostgreSQL Public 模式的风险以及安全迁移

别再忽视!PostgreSQL Public 模式的风险以及安全迁移作者:桦仔 10余年DBA工作经验 微信:debolop QQ交流群:740052625 公众号:数据库实战派问题起因 前几天有群友在群里面咨询PG12,13,14,public模式是否可以删除或改名?因为这位群友的公司的PG规范做了修改,不让使用…

读数据湖仓09读后总结与感想兼导读

读后总结与感想兼导读1. 基本信息 数据湖仓[美]比尔恩门(BillInmon);[美]戴夫拉皮恩(DaveRapien);[美]瓦莱丽特(ValerieBartelt)著人民邮电出版社2024年7月出版1.1. 读薄率 书籍总字数???千字,笔记总字数23238字。 读薄率23238???000≈??% 1.2. 读厚方向构建可…

library官网登录入口,zlibrary中文网及客户端/app

Z-Library是一个全球知名的在线数字图书馆和文件共享网站,以下是它的详细介绍:藏书量丰富:Z-Library拥有超过9,826,996本电子书和84,837,646篇学术期刊文章,覆盖了从经典文学到前沿理工学科,从人文艺术到专业学术论文的广泛领域。 多种格式支持:Z-Library支持多种电子书格…