使用streamlit创建一个产品指标与排名看板【2】创建一个使用sidebar+exec管理的多页面应用

news/2025/2/22 0:22:46/文章来源:https://www.cnblogs.com/iblk/p/18727786

1. Streamlit常见的多页面管理形式

  1. pages文件夹形式的多页面应用
  2. switch_page或者page_link跳转
  3. sidebar+exec形式

开始时使用的方法1,使用文件结构和文件名称管理多页面,页面内容可以不需要为导航专门再写东西,非常便捷。随着使用,缺点也很明显,无法再定义导航栏中的页面名称,运行app后是一个url/+[页面名称]的多路径形式。

后来研究怎么自定义这个页面名称,并且使用一个url访问所有页面,官方文档会推荐switch_page\page_link方法。实现时发现很容易受限于streamlit版本,最终使用了sidebar+exec的方法,路径灵活、名称可自定义而且不受限于版本。

2.多页面配置

1.文件结构
Streamlit/config.py #配置页面home.py #主页common.py #页面公用方法display1.py #页面1display2.py #页面2display3.py #页面3display4.py #页面4main.py #主程序入口
2. 页面配置编码

这里面使用了st.session.current_page全局变量记录当前的页面信息,页面导航在sidebar里定义button来实现。通过st.session.current_page的值来判断需要打开的页面exec(open("page.py"))

def main():st.title("多页应用示例")st.sidebar.title("导航菜单")# 设置按钮宽度为容器宽度st.sidebar.markdown("""<style>div.stButton > button {width: 100%;}</style>""",unsafe_allow_html=True,)# 使用按钮实现页面跳转if st.sidebar.button("首页"):st.session_state.current_page = "home"if st.sidebar.button("数据源配置"):st.session_state.current_page = "config"if st.sidebar.button("指标分类积分"):st.session_state.current_page = "display1"if st.sidebar.button("指标横向查询"):st.session_state.current_page = "display2"if st.sidebar.button("产品指标查询"):st.session_state.current_page = "display3"if st.sidebar.button("产品排名查询"):st.session_state.current_page = "display4"# 默认页面if "current_page" not in st.session_state:st.session_state.current_page = "home"# 加载对应的页面模块if st.session_state.current_page == "home":exec(open("home.py").read())elif st.session_state.current_page == "config":exec(open("config.py").read())elif st.session_state.current_page == "display1":exec(open("display1.py").read())elif st.session_state.current_page == "display2":exec(open("display2.py").read())elif st.session_state.current_page == "display3":exec(open("display3.py").read())elif st.session_state.current_page == "display4":exec(open("display4.py").read())
运行效果

image

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

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

相关文章

基于FOC控制器的BLDC无刷直流电机控制系统matlab编程与仿真

1.课题概述基于FOC控制器的BLDC无刷直流电机控制系统matlab编程与仿真,使用MATLAB编程实现,包括FOC控制器,clark,park等,不使用simulink建模。仿真输出三相电流,电机转速以及转子角度。2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a%矢场定向控制 function [A,B,C…

DelayQueue 底层原理

一、DelayQueue 底层原理 DelayQueue是一种本地延迟队列,比如希望我们的任务在5秒后执行,就可以使用DelayQueue实现。常见的使用场景有:订单10分钟内未支付,就取消。缓存过期后,就删除。消息的延迟发送等。但是DelayQueue是怎么使用的?底层原理是什么样的?如果有多个任务…

基于Affine-Sift算法的图像配准matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)Affine-Sift算法 Sift算法 2.算法运行软件版本 MATLAB2022A3.部分核心程序 (完整版代码包含操作步骤视频)figure; subplot(121);imshow(img1s);title(原始图片1); subplot(122);imshow(img2s);title(原始图片2); %计算图片的大…

【H2O系列】包括人形机器人WBC相关论文小结

1. 前言 这篇博客主要用于记录包括人形机器人WBC或locomotion相关论文小结。 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流。 如有不对之处,欢迎评论区指出错误,你我共同进步学习! PS:主要是备忘,不然看过就忘了。。。(汗 2. 正文 先看数据集或者说动捕…

设计测试用例方法-场景法

一、场景法: 场景法主要是针对测试场景类型的,也称场景流程分析法。 流程分析是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支都能走到 案例1:购物流程案例2:离职流程案例3:atm机二、流程分析步骤: 1.画…

寒假工程5

对于每个项目,需要单独编写其相关工能 @Override public String toString() { return "Communication{" + "assessmentID=" + assessmentID + + ", consciousnessLevel=" + consciousnessLevel + ", visionLevel=" + visionLevel + …

VDN、QMIX、QTRAN、COMA

VDN、QMIX、QTRAN、COMA 论文名称: VDN:《Value-Decomposition Networks For Cooperative Multi-Agent Learning》 QMIX: 《QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning》 QTRAN:《QTRAN: Learning to Factorize with Trans…

Visual Solution of 20250220

Visual Solution of 20250220 GraphSumPath 最小化 \[\sum x_i \]满足约束 \[\sum_{e\in P}x_e+w_e\ge c+d \]\(d\) 是最短路化为标准型 最大化 \[\sum -x_i \]满足约束 \[\sum_{e\in P}-x_e \le \sum_{e\in P}w_e-c-d \] 对偶 最小化 \[\sum_{P}{\left(\sum_{e\in P}w_e-c-d\r…

uds打包

这个链接:http://uds-boss-immarketing-integration-8080.msxfcloud.test/#/uds/pipeline选这个 这里选这个

最快速排序

求得最少操作次数,就是逆序对数量 `#include<bits/stdc++.h> using namespace std; const int N=500010; int n;int a[N],tem[N]; long long m_sort(int l,int r) { if(l>=r)return 0; int mid=l+r>>1; long long ans+=m_sort(l,mid)+m_sort(mid+1,r); int i=l…

【雷池WAF】一条命令部署雷池WAF,安全从此“躺平”

# 长亭雷池WAF # 自动化工具 Web应用已成为企业的核心入口,但随之而来的SQL注入、XSS攻击、爬虫窃密等问题层出不穷。传统WAF依赖规则库的被动防御模式,面对自动化工具和0day漏洞时显得捉襟见肘。长亭雷池WAF(SafeLine)凭借“动态防护”和“智能语义分析”两大核心技术,重…