Skip to content

πŸ–±οΈΒ Β Switch page function

Submitted by Zachary Blackwood

Summary

Function to switch page programmatically in a MPA

Functions

switch_page

Switch page programmatically in a multipage app

Parameters:

Name Type Description Default
page_name str

Target page name

required
Source code in src/streamlit_extras/switch_page_button/__init__.py
@extra
def switch_page(page_name: str):
    """
    Switch page programmatically in a multipage app

    Args:
        page_name (str): Target page name
    """

    try:
        from streamlit.runtime.scriptrunner import RerunData, RerunException
    except ModuleNotFoundError:  # For streamlit > 1.37
        from streamlit.runtime.scriptrunner_utils.exceptions import RerunException
        from streamlit.runtime.scriptrunner_utils.script_requests import RerunData

    from streamlit.source_util import get_pages

    def standardize_name(name: str) -> str:
        return name.lower().replace("_", " ")

    page_name = standardize_name(page_name)

    pages = get_pages("streamlit_app.py")  # OR whatever your main page is called

    for page_hash, config in pages.items():
        if standardize_name(config["page_name"]) == page_name:
            raise RerunException(
                RerunData(
                    page_script_hash=page_hash,
                    page_name=page_name,
                )
            )

    page_names = [standardize_name(config["page_name"]) for config in pages.values()]

    raise ValueError(f"Could not find page {page_name}. Must be one of {page_names}")

Import:

from streamlit_extras.switch_page_button import switch_page # (1)!
  1. You should add this to the top of your .py file πŸ› 

Examples

example

def example():
    want_to_contribute = st.button("I want to contribute!")
    if want_to_contribute:
        switch_page("Contribute")