引言
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/