Streamlit(十八)- API 参考文档(十一)- 页面导航组件

文章目录


1. st.navigation:自定义多页面导航生成器

功能说明

新一代多页面应用路由核心API,在入口文件统一管理全部页面,支持页面分组、侧边/隐藏两种导航位置、菜单折叠控制,完全替代传统pages/文件夹自动路由。返回当前选中的页面对象,调用.run()渲染页面内容。

核心参数

参数 说明
pages 页面列表或分组字典:列表为平铺页面;字典键为分组标题,值为该分组下st.Page对象列表
position 导航菜单位置:sidebar侧边栏顶部、hidden完全隐藏导航
expanded 导航菜单默认展开状态,True永久展开、False默认折叠

代码示例

python 复制代码
import streamlit as st

# 定义分组页面
page_groups = {
    "数据工具": [
        st.Page("data_upload.py", title="数据上传", icon="📤"),
        st.Page("data_analysis.py", title="数据分析", icon="📊")
    ],
    "系统设置": [
        st.Page("setting.py", title="账号设置", icon="⚙️", default=True)
    ]
}
# 生成侧边导航
current_page = st.navigation(page_groups, position="sidebar")
# 执行当前选中页面
current_page.run()

2. st.Page:页面对象构造类

功能说明

用来封装单页信息的构造函数,生成StreamlitPage实例,传入st.navigation注册页面;支持本地py文件、Python函数两种页面源,可自定义页面标题、图标、路由地址、默认首页。

核心参数

参数 说明
page 页面源:py文件相对路径 / 无参Python函数
title 导航菜单展示的页面名称,不填自动读取文件名/函数名
icon 导航图标,支持Emoji、Material图标
url_path 浏览器路由后缀,默认自动生成;default=True时为空根路由
default 是否设为应用默认首页,打开App自动加载该页面

代码示例

python 复制代码
import streamlit as st

# 1. 文件页面
page_file = st.Page("dashboard.py", title="数据看板", icon=":material/bar_chart:", default=True)
# 2. 函数页面
def func_page():
    st.title("函数页面")
page_func = st.Page(func_page, title="工具页面", icon="🔧")

st.navigation([page_file, page_func]).run()

3. st.page_link:页面跳转链接

功能说明

页面内渲染跳转按钮/链接,分为内部应用页面跳转外部网址跳转两种模式;点击后直接切换页面或新开标签页,无需额外按钮逻辑。

核心参数

参数 说明
page 目标:本地页面文件路径 / st.Page对象 / http/https外部链接
label 链接显示文字,外部链接必填
icon 链接前置图标
disabled 是否禁用该跳转链接
use_container_width 链接宽度填满父容器

代码示例

python 复制代码
import streamlit as st

# 跳转内部页面
st.page_link("dashboard.py", label="返回首页", icon="🏠")
# 跳转外部网页
st.page_link("https://www.baidu.com", label="打开百度", icon="🌐")
# 禁用的页面链接
st.page_link("analysis.py", label="数据分析(维护中)", disabled=True)

4. st.switch_page:代码编程式强制切换页面

功能说明

代码内触发页面跳转,常用于按钮点击、表单提交、登录成功等场景,执行后立刻终止当前页面代码,加载目标页面,纯逻辑驱动无UI展示。

核心参数

  • page:目标页面的相对文件路径,或预先定义的st.Page对象

代码示例

python 复制代码
import streamlit as st

# 点击按钮自动跳转到首页
if st.button("回到首页"):
    st.switch_page("main.py")

# 表单提交后跳转数据页
submit = st.form_submit_button("开始分析")
if submit:
    st.switch_page("pages/data_analysis.py")
相关推荐
aqi001 小时前
15天学会AI应用开发(三)把历史对话作为提示词会怎样
人工智能·python·大模型·ai编程·ai应用
weixin_468466851 小时前
数据高效处理实战:从痛点解决到价值落地
大数据·python·自动化·数据处理
hui函数2 小时前
Python系列Bug修复|如何解决 pip install 报错 ModuleNotFoundError: No module named ‘pygame’ 问题
python·bug·pip
xcLeigh2 小时前
Python入门:Python3 operator模块全面学习教程
开发语言·python·学习·教程·python3·operator
xcLeigh2 小时前
Python小游戏实战:实现2048游戏小游戏附源码
python·游戏·教程·pygame·2048·python3
大叔带刺2 小时前
使用python创建自己的专属星座签名APP:Name2Constell
开发语言·python·pygame
weixin_468466852 小时前
Markitdown 文档解析快速入门指南
开发语言·python·自动化·编程
我材不敲代码2 小时前
Python基础:注释的写法(单行、多行、文档注释)
服务器·python·microsoft