streamlit 多页面应用重命名与排序

引言

Streamlit 作为简单易上手的数据分析可视化web框架,即使完全不会前端知识,也能快速开发 web应用。近期计划将水环境分析中的一些应用场景、业务需求梳理为工具箱,作为日常数据分析的帮手,由于工具比较多,难免会遇到多页面开发的情况,因此遇到一个问题,就是 streamlit 默认显示文件名作为导航页面,且按照字母顺序进行排名,这样显然是不自由的。

默认顺序

我希望按照自己的顺序和中文名称显示,于是在 Streamlit 官方 docs 中找到了解决方法。记录如下:

文件框架

之前介绍过文件框架和多页面设置,具体可以看相关文件,这里介绍最简单的。

your-repository/ 
├── .streamlit/ 
│ └── config.toml 
├── pages/ 
│ ├── page1.py 
│ ├── page2.py 
│ └── page3.py 
├── menu.py 
└── app.py

在.streamlit/config.toml 文件内输入下面脚本,代表隐藏侧边栏的默认导航功能。

[client]  
showSidebarNavigation = flase

menu

修改菜单脚本,目的是自定义脚本显示样式,核心方法为.page_link。具体语法如下

import streamlit as st 
   
def menu():  
    st.sidebar.page_link("app.py", label="首页")  
    st.sidebar.page_link("pages/weather_base.py", label="降雨")  
    st.sidebar.page_link("pages/weather_country.py", label="天气")  
    st.sidebar.page_link("pages/weather_country.py", label="降雨表格")  
    st.sidebar.page_link("pages/chat_AI.py", label="AI聊天")  
    st.sidebar.page_link("pages/streamlit_data.py", label="数据分析")

以上是工作中具体例子,定义好后就在其他的页面引用这个程序就好了。比如在 app. py 中

import streamlit as st  
from menu import menu  
def main():  
    st.sidebar.title('首页')  
  
if __name__ == "__main__":  
    menu()  
    main()

以此类推,在其他页面引用即可,这样就完成了重命名和排序,如果觉得比较单调,可以加入 emoji。查找 emoji,可以使用输入法或者访问 emoji 网站搜索。

st.sidebar.page_link("app.py", label="🏠首页")

最终效果如下,效果还是非常好的。

tips

如果不生效,用 pip install --upgrade streamlit 命令升级到最新版本的 Streamlit。
然后重新运行。

相关文件

Streamlit官方文件:https://docs.streamlit.io/develop/tutorials/multipage/st.page_link-nav

Emoji: https://emojipedia.org/

Streamlit 多页面应用设计指南:构建模块化数据分析平台_streamlit 子页面-CSDN博客

python 项目框架管理_python项目结构管理-CSDN博客

BY

纯个人经验,如有帮助,请收藏点赞,如需转载,请注明出处。
微信公众号:环境猫 er
CSDN : 细节处有神明
个人博客: https://maoyu92.github.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

细节处有神明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值