You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Streamlit中通过按钮跳转至另一个Python文件页面

Streamlit 实现页面跳转至其他Python文件的方案

Streamlit 本身是单页应用框架,但可以通过以下几种方式实现点击按钮或表单提交后跳转到其他Python文件对应的页面:

方法一:使用官方内置多页面功能(推荐)

Streamlit 1.10+ 版本支持原生多页面结构,只需按规范组织项目,就能通过 st.switch_page() 实现跳转。

步骤:

  1. 按如下结构组织项目:
你的项目目录/
├── app.py          # 主页面文件
└── pages/          # 存放其他页面的文件夹(必须叫pages)
    └── page2.py    # 要跳转的目标页面文件
  1. 主页面(app.py)中添加按钮/表单跳转逻辑:
import streamlit as st

# 普通按钮跳转
if st.button("跳转到第二个页面"):
    st.switch_page("pages/page2.py")  # 路径对应目标文件位置

# 表单提交跳转
with st.form("提交表单"):
    st.text_input("请输入内容")
    submit_status = st.form_submit_button("提交并跳转")
    if submit_status:
        st.switch_page("pages/page2.py")
  1. 目标页面(pages/page2.py)编写常规Streamlit代码:
import streamlit as st

st.title("这是第二个页面")
st.write("成功跳转!")

# 可选:添加返回主页面的按钮
if st.button("返回主页面"):
    st.switch_page("app.py")

方法二:通过Session State控制页面切换(无需官方多页面结构)

如果不想使用官方多页面目录,可借助 st.session_state 存储当前页面状态,通过变量切换加载不同页面的内容。

步骤:

  1. 项目结构:
你的项目目录/
├── app.py          # 入口文件
└── page2.py        # 目标页面的逻辑文件
  1. 入口文件(app.py):
import streamlit as st
from page2 import render_page2  # 导入目标页面的渲染函数

# 初始化页面状态
if "current_page" not in st.session_state:
    st.session_state.current_page = "main"

# 根据状态渲染对应页面
if st.session_state.current_page == "main":
    st.title("主页面")
    
    # 普通按钮跳转
    if st.button("跳转到Page2"):
        st.session_state.current_page = "page2"
        st.rerun()  # 强制页面重新渲染
    
    # 表单提交跳转
    with st.form("提交表单"):
        st.text_input("填写信息")
        if st.form_submit_button("提交并跳转"):
            st.session_state.current_page = "page2"
            st.rerun()
elif st.session_state.current_page == "page2":
    render_page2()
  1. 目标页面文件(page2.py):
import streamlit as st

def render_page2():
    st.title("Page2")
    st.write("通过Session State切换的页面")
    
    # 返回主页面
    if st.button("返回主页面"):
        st.session_state.current_page = "main"
        st.rerun()

注意事项:

  • 使用 st.switch_page() 前确保Streamlit版本≥1.10,可通过 pip install --upgrade streamlit 升级。
  • st.switch_page() 的路径需相对于项目根目录,若目标文件在子文件夹中要写全路径。
  • 表单提交后页面会自动重新渲染,因此判断提交状态后执行跳转逻辑即可生效。

内容的提问来源于stack exchange,提问作者Mazen Saie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:12:07