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")
相关推荐
aqi003 小时前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用
Csvn4 小时前
`functools.lru_cache` —— 一行代码搞定缓存加速
后端·python
金銀銅鐵20 小时前
[Python] 从《千字文》中随机挑选汉字
后端·python
cup111 天前
[技术复盘] Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
python·ai·环境变量·ci·nuitka·skill
aqi001 天前
15天学会AI应用开发(七)有了大模型为什么还要引入RAG
人工智能·python·大模型·ai编程·ai应用
金銀銅鐵1 天前
用 Python 实现 Take-Away 游戏
python·游戏
copyer_xyf1 天前
Agent 流程编排
后端·python·agent
copyer_xyf1 天前
Agent RAG
后端·python·agent