Python应用开发——30天学习Streamlit Python包进行APP的构建(23):构建多页面应用程序

创建动态导航菜单

通过 st.navigation,可以轻松创建动态导航菜单。您可以在每次重新运行时更改传递给 st.navigation 的页面集,从而更改与之匹配的导航菜单。这是创建自定义、基于角色的导航菜单的便捷功能。

本教程使用 st.navigation 和 st.Page,它们是在 Streamlit 1.36.0 版中引入的。有关使用 pages/ 目录和 st.page_link 的旧版解决方法,请参阅使用 st.page_link 创建自定义导航菜单。Build a custom navigation menu with `st.page_link` - Streamlit Docs

应用概念 

使用 st.navigation 和 st.Page 定义多页面应用程序。
创建基于角色的动态导航菜单

先决条件

您的 Python 环境中必须安装以下文件: 

streamlit>=1.36.0

你应该有一个名为 your-repository 的干净工作目录。

您应该对 st.navigation 和 st.Page 有基本的了解。

摘要

在本示例中,我们将为多页面应用程序创建一个动态导航菜单,该菜单取决于当前用户的角色。为简化示例,您将抽象掉用户名和凭据的使用。取而代之的是使用选择框让用户选择角色并登录。

入口点文件 streamlit_app.py 将处理用户身份验证。其他页面将是代表账户管理(settings.py)的存根,以及与三种角色相关的特定页面: 请求者、响应者和管理员。请求者可以访问账户和请求页面。响应者可以访问账户和响应页面。管理员可以访问所有页面。

下面是我们要构建的内容:

your-repository/
├── admin
│   ├── admin_1.py
│   └── admin_2.py
├── images
│   ├── horizontal_blue.png
│   └── icon_blue.png
├── request
│   ├── request_1.py
│   └── request_2.py
├── respond
│   ├── respond_1.py
│   └── respond_2.py
├── settings.py
└── streamlit_app.py

代码

import streamlit as st

if "role" not in st.session_state:
    st.session_state.role = None

ROLES = [None, "Requester", "Responder", "Admin"]

#设定两个函数,这里登录和等出

def login():

    st.header("Log in")
    role = st.selectbox("Choose your role", ROLES)

    if st.button("Log in"):
        st.session_state.role = role
        st.rerun()


def logout():
    st.session_state.role = None
    st.rerun()


role = st.session_state.role

#这里我们分别设定不同界面的程序
logout_page = st.Page(logout, title="Log out", icon=":material/logout:")
settings = st.Page("settings.py", title="Settings", icon=":material/settings:")
request_1 = st.Page(
    "request/request_1.py&#
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

此星光明

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

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

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

打赏作者

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

抵扣说明:

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

余额充值