Nouveautés Streamlit 🎈 1.36.0

Découvrez les fonctionnalités de st.navigation et st.Page pour créer des applications multipages avec Streamlit

Streamlit, l'une des bibliothèques les plus populaires pour la création d'applications web en Python, continue d'évoluer avec sa version 1.36.0. Cette mise à jour inclut des fonctionnalités très attendues qui révolutionnent la manière de créer des applications multipages. Deux nouveautés majeures se démarquent : st.Page et st.navigation, qui offrent une manière innovante de définir et de gérer les applications multipages.

Découvrez comment ces nouvelles fonctionnalités peuvent simplifier la navigation et améliorer l'expérience utilisateur de vos applications Streamlit. Nous vous expliquerons en détail comment utiliser st.Page et st.navigation.


St.Page : Configurer une Page pour vos Applications Multipages

La nouvelle fonction st.Page introduite dans Streamlit 1.36.0 simplifie la configuration des pages pour les applications multipages. Cette fonctionnalité permet de créer des objets de type StreamlitPage que vous pouvez ensuite utiliser avec st.navigation pour structurer et contrôler la navigation de votre application.

Fonctionnalités et Paramètres de st.Page

Fonction Signature

st.Page(page, *, title=None, icon=None, url_path=None, default=False)

Paramètres

  • page : Le chemin relatif du fichier Python ou une fonction Callable représentant le contenu de la page.
  • title : Le titre de la page affiché dans le menu de navigation et l'onglet du navigateur. Par défaut, le titre est dérivé du nom de fichier ou de la fonction.
  • icon : Un emoji ou une icône Material Symbol affiché à côté du titre et dans l'onglet du navigateur.
  • url_path : Le chemin URL relatif à la racine de l'application. Par défaut, ce chemin est dérivé du nom de fichier ou de la fonction.
  • default : Indique si la page est la page par défaut lorsqu'une application est chargée.

Exemple d'Utilisation de st.Page

Pour illustrer l'utilisation de st.Page, voici un exemple simple où nous créons deux pages : page1.py et une fonction Python page2.

import streamlit as st

def page1():
    st.title("Première page")
    st.write("Bienvenue sur la première page de l'application.")

def page2():
    st.title("Seconde page")
    st.write("Vous êtes maintenant sur la seconde page.")

pg = st.navigation([
    st.Page(page1, title="Page d'accueil", icon="🏠"),
    st.Page(page2, title="À propos", icon="🔍")
])
pg.run()

Dans cet exemple :

  • page1 est une fonction qui affiche un titre et un message.
  • page2 est également une fonction affichant un titre et un message différent.
  • st.Page est utilisé pour créer des objets de page avec des titres et des icônes personnalisés.
  • st.navigation est appelé avec une liste de pages, permettant à l'utilisateur de naviguer entre elles.

La suite de notre article aborde la gestion de la navigation entre ces pages avec st.navigation.


st.Navigation : Gérer la Navigation Multipage dans vos Applications Streamlit

Avec la version 1.36.0 de Streamlit, la fonctionnalité st.navigation simplifie grandement la gestion de la navigation dans les applications multipages. Cette fonction agit comme un routeur, permettant à l'utilisateur de se déplacer facilement entre différentes pages de l'application.

Fonctionnalités et Paramètres de st.navigation

Fonction Signature

st.navigation(pages, *, position="sidebar")

Paramètres

  • pages : Une liste d'objets StreamlitPage ou un dictionnaire où chaque clé représente un label de section et chaque valeur est une liste d'objets StreamlitPage.
  • position : La position du widget de navigation. La valeur par défaut est "sidebar", mais elle peut être définie sur "hidden" pour masquer le widget de navigation.

Retourne

  • (StreamlitPage) : La page actuelle sélectionnée par l'utilisateur.

Exemple d'Utilisation de st.navigation

Voyons comment st.navigation peut être utilisé pour gérer la navigation entre plusieurs pages en utilisant des routes définies par des fichiers Python ou des foncteurs.

Exemple 1 : Utilisation de st.navigation avec une Liste de Pages

import streamlit as st

def page1():
    st.write("Bienvenue sur la page 1.")

def page2():
    st.write("Bienvenue sur la page 2.")

pg = st.navigation([st.Page(page1), st.Page("page2.py")])
pg.run()

Dans cet exemple :

  • page1 et "page2.py" sont définis comme des pages navigables.
  • st.navigation prend une liste d'objets StreamlitPage et retourne la page actuelle.
  • pg.run() exécute la page sélectionnée.

Exemple 2 : Utilisation de st.navigation avec des Sections

Pour organiser les pages en sections, vous pouvez utiliser un dictionnaire :

import streamlit as st

pages = {
    "Compte utilisateur" : [
        st.Page("creer_compte.py", title="Créer un compte"),
        st.Page("gerer_compte.py", title="Gérer le compte")
    ],
    "Ressources" : [
        st.Page("apprendre.py", title="Apprendre sur nous"),
        st.Page("essayer.py", title="Essayer")
    ]
}

pg = st.navigation(pages)
pg.run()

Dans cet exemple, les sections "Compte utilisateur" et "Ressources" regroupent plusieurs pages, facilitant ainsi la navigation et l'organisation de l'application.

Widgets Partagés entre les Pages

Pour les applications qui nécessitent des widgets partagés entre plusieurs pages, utilisez st.session_state et assignez des clés aux widgets communs :

import streamlit as st

def page1():
    st.write(st.session_state.foo)

def page2():
    st.write(st.session_state.bar)

# Widgets partagés par toutes les pages
st.sidebar.selectbox("Sélectionner Foo", ["A", "B", "C"], key="foo")
st.sidebar.checkbox("Activer Bar", key="bar")

pg = st.navigation(st.Page(page1), st.Page(page2))
pg.run()

Dans cet exemple :

  • Des widgets such as selectbox et checkbox sont définis dans la barre latérale.
  • Les valeurs des widgets sont accessibles dans chaque page via st.session_state.

Ces nouvelles fonctionnalités de Streamlit 1.36.0 ouvrent de nouvelles possibilités pour la création d'applications web interactives et bien structurées. Vous pouvez dès maintenant intégrer st.Page et st.navigation pour améliorer la navigation et l'expérience utilisateur de vos applications Streamlit.

Revenez à notre page d'accueil

Streamlit 🎈
Découvrez comment créer des applications web interactives en Python 🐍