はじめに
Streamlitはpagesフォルダ内にスクリプトを配置するだけで、MPA(マルチページアプリケーション)を簡単に実装できます。(自動でサイドバーが設定されて各ページへのリンクが配置されます。)
※Next.js的な感じですね。
非常にお手軽で便利なのですが、サイドバーのリンクからしかページ遷移できなかったり、サイドバー自体を非表示にすることはできませんでした。
バージョン1.30.0で、サイドバーを隠しつつページ遷移もプログラムから実行できるようになりましたのでご紹介です。
※該当部分抜粋
🔄 Announcing st.switch_page to programmatically switch pages in multipage apps! Check out our docs to learn about this highly anticipated feature!
🧭 Sidebar navigation for multipage apps can be hidden via configuration (#7852).
やり方
- .streamlit/config.tomlとpages/にスクリプトを配置します。
.
├── .streamlit/
│ └── config.toml
├── pages/
│ ├── page_1.py
│ └── page_2.py
└── app.py
config.toml
[client]
showSidebarNavigation = false
- ページ遷移は以下のように指定できます。
import streamlit as st
if st.button("Home"):
st.switch_page("app.py")
if st.button("Page 1"):
st.switch_page("pages/page_1.py")
if st.button("Page 2"):
st.switch_page("pages/page_2.py")
おわりに
あとはCSSの自由な指定とパフォーマンス向上に期待です!