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

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

默认顺序

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

文件框架

多页面设置之前介绍过文件框架,[[python 项目框架管理]] ,这里介绍最简单的。

1
2
3
4
5
6
7
8
9
your-repository/ 
├── .streamlit/
│ └── config.toml
├── pages/
│ ├── page1.py
│ ├── page2.py
│ └── page3.py
├── menu.py
└── app.py

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

1
2
[client]  
showSidebarNavigation = true

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

1
2
3
4
5
6
7
8
9
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 中

1
2
3
4
5
6
7
8
import streamlit as st  
from menu import menu
def main():
st.sidebar.title('首页')

if __name__ == "__main__":
menu()
main()

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

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

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

tips

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

相关文件

Streamlit官方文件:
Build a custom navigation menu with st.page_link - Streamlit Docs
Emoji: https://emojipedia.org/
[[python 项目框架管理]]
[[Streamlit 多页面应用设计指南:构建模块化数据分析平台]]
Streamlit 多页面应用设计指南:构建模块化数据分析平台_streamlit 子页面-CSDN博客
python 项目框架管理_python项目结构管理-CSDN博客

BY

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


streamlit 多页面应用重命名与排序
https://maoyu92.github.io/2024/08/15/04 经验分享/streamlit 多页面重命名/
作者
陈文茂
发布于
2024年8月15日
许可协议