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

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

时间:2024-08-02 21:54:16浏览次数:18  
标签:菜单 23 Python py st role 构建 Page 页面

创建动态导航菜单

通过 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&#

标签:菜单,23,Python,py,st,role,构建,Page,页面
From: https://blog.csdn.net/qq_31988139/article/details/140185339

相关文章

  • Python数据结构第二天—循环链表、树、二叉搜索树
    双向链表之前学习的单向链表只能从头遍历到尾,过程是单向的,而双向链表既可以从头遍历到尾,也可以从尾遍历到头,它的过程是双向的。既然它是双向的,那么我们要实现一个双向链表,就需要在单向链表的基础上,给每一个结点增加一个向前的引用。双向链表的创建:"""我们要实现的是一......
  • Python学习笔记50:游戏篇之外星人入侵(十一)
    前言本篇文章接着之前的内容,继续对游戏功能进行优化,主要是优化游戏状态以及对应的处理。状态一个游戏包含多种状态,这个状态是一个可以很复杂也可以很简单的内容。条件所限,我们这个游戏的状态就比较简单:未开始游戏中暂停结束我们通过一个字段进行控制,并且将这个字段放置......
  • COSC2391 Further Programming
    COSC2391 FurtherProgramming/COSC1295AdvancedProgrammingAssignment 1–Semester2 2024IntroductionYouarerequiredtoimplementabasicJavaprogram usingJava.This assignment is designed to:•   TestyourknowledgeofbasicJava concepts......
  • python——functools
    好的,我们再详细讲解functools模块的常用工具,包括每个API的语法和参数,并特别详细解释lru_cache的工作原理及其缓存机制。functools简介functools模块提供了许多高阶函数和工具,用于操作或返回其他函数,帮助我们更方便地进行函数式编程。1.partial函数partial函数用于固定......
  • Python中类的三种重要装饰器
    Python中类的三种重要装饰器:classmethod、staticmethod和property。这些装饰器用于定义不同类型的方法和属性,能大大增强类的功能和灵活性。一、classmethod装饰器1.什么是classmethod?classmethod装饰器用于将一个方法绑定到类上,而不是实例上。换句话说,通过classm......
  • Python——继承
    一、继承1.什么是继承?继承是一种面向对象编程的机制,允许一个类(子类)从另一个类(父类)继承属性和方法。子类可以扩展或修改父类的功能。2.如何实现继承?在Python中,实现继承非常简单,只需要在定义子类时将父类作为参数传递即可。示例classAnimal:def__init__(self,......
  • 《从零开始:使用Python构建简单Web爬虫》
    前言随着互联网信息的爆炸性增长,如何高效地获取和处理这些数据变得越来越重要。Web爬虫作为一种自动化工具,可以帮助我们快速抓取所需的网页内容。本文将介绍如何使用Python编写一个简单的Web爬虫,并通过实例演示其基本用法。准备工作Python环境:确保你的计算机上已经安装......
  • NewStarCTF WEEK5|WEB pppython?
    对源码进行简单的分析<?php//检查`hint`请求参数是否等于指定的数组值if($_REQUEST['hint']==["your?","mine!","hint!!"]){//如果条件满足,设置响应内容类型为纯文本header("Content-type:text/plain");//执行系统命令`ls/-la`列出......
  • 【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+
    一、项目介绍眼疾识别系统,使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对眼疾图片4种数据集进行训练('白内障','糖尿病性视网膜病变','青光眼','正常'),最终得到一个识别精确度较高的模型。然后使用Django框架开发Web网......
  • Dockerfile 构建java程序的docker镜像
    Dockerfile示例#设置jdk版本FROMopenjdk:8#设置容器内部工作目录为/java,后续命令将在该目录下执行操作WORKDIR/java#置容器的时区为亚洲/上海,以确保正确的时间设置。ENVTZ=Asia/Shanghai#在容器中设置正确的时区信息。RUNln-snf/usr/share/zoneinfo/$TZ/etc/local......