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")
相关推荐
“AI国潮设计-小江”7 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
wenwen_chao7 小时前
Python学习与开发资源合集:实用技巧与工具推荐
python
for_ever_love__8 小时前
函数——参数、lambda、*args与作用域
python·函数·大模型开发·编程基础
东莞市云毅网络有限公司8 小时前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
Query*8 小时前
深入浅出LangGraph【一】_基础篇
python·ai·langchain
XiaoMaqqqq8 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
ShyanZh9 小时前
【Python3基础】19-Socket 与 TCP、UDP 编程
python·网络协议·tcp/ip·udp
惊讶的猫10 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
天赐范式10 小时前
天赐范式第186天:让方差开始自洽——Bulmer效应的闭式验证
python·数字生命·天赐范式·动态运行时·遗传方差·bulmer效应
泡茶喝茶写代码10 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据