π±οΈΒ Β 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
|
|
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)!
- 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")