Streamlit-Pages


Author: @blackary
Code: https://github.com/blackary/st_pages
Installation
pip install st-pages
See it in action
Basic example: https://st-pages.streamlit.app/
Example with sections: https://st-pages-sections.streamlit.app/
Why st-pages?
Previously, st-pages allowed for a much more customizable and flexible declaration of
pages in a Streamlit app, and was independent of the actual filenames of the python
files in your project.
As of 1.0.0, st-pages is now a tiny wrapper that provides an easy method for defining
the pages in your app in a toml file, as well as a few utility methods to let you
add the current page's title to all pages, etc.
You are welcome to continue to use older versions of this package, but most of the
old use-cases are now easy to do with native streamlit, so I would recommend
checking out the documentation
for more information.
How to use
Declare pages inside of a toml file
Contents of .streamlit/pages.toml
[[pages]]
path = "page1.py"
name = "Home"
icon = "🏠"
[[pages]]
path = "other_pages/page2.py"
name = "Page 2"
icon = ":books:"
url_path = "my_books"
Example with sections, .stremalit/pages_sections.toml
:
[[pages]]
path = "page1.py"
name = "Home"
icon = "🏠"
[[pages]]
path = "other_pages/page2.py"
name = "Page 2"
icon = ":books:"
[[pages]]
name = "My section"
icon = "🎈️"
is_section = true
[[pages]]
name = "Another page"
icon = "💪"
Streamlit code:
import streamlit as st
from st_pages import add_page_title, get_nav_from_toml
st.set_page_config(layout="wide")
nav = get_nav_from_toml(".streamlit/pages_sections.toml")
st.logo("logo.png")
pg = st.navigation(nav)
add_page_title(pg)
pg.run()
Hiding pages
You can now pass a list of page names to hide_pages
to hide pages from now on.
This list of pages is custom to each viewer of the app, so you can hide pages
from one viewer but not from another using this method. You can see another example of
hiding pages in the docs here
from st_pages import hide_pages
hide_pages(["Another page"])