Streamlitで作ったダッシュボードを自動でスライドショーさせるZenn0msys📊Streamlitで作ったダッシュボードを自動でスライドショーさせる2024/01/24に公開PythonStreamlittech今回作ったものStreamlitで作ったダッシュボードを自動でスライドショーできるか試してみました。↓が完成したものです。※スライドバーやチェックボックスを操作するたびに再描画され、乱数で作っているグラフが変化しているのはご愛嬌です。一応イメージしていたものはできました。複数のダッシュボードを自動でスライドショーで回しながら常設ディスプレイで表示しておきたいことがあり、今まではStreamlitではできなかったのでGrafanaを使ってやっていたのですが、Grafanaはそれなりの知識や設定が必要ですし、DBからGrafana表示用にPythonで加工してDBに戻して・・・みたいな面倒なことをやっていたので、なかなか辛くなってきていました。Streamlitが1.30.0に更新されてst.switch_pageが追加され、マルチページアプリのページ遷移がプログラム上から可能になったので、やりたいことができるか試してみました。実装手順Streamlit開発環境の準備まずこの前作ったテンプレートを使って、Streamlitのプロジェクトを作ります。templateを押してリポジトリを作って、ローカルにクローンして必要な個所のtemplateをslide-showに置き換えたら開発の準備は完了です。準備が整ったら、VSCodeでdevcontainerを起動します。適当なデータでグラフのあるページを3つほど作ります。こだわっても仕方ないので、Streamlitのドキュメントにあるサンプルコードをコピペします。"c"])st.line_chart(chart_data)ページ遷移の実装st.switch_pageを使って、ページ遷移を実装します。ドキュメントをみたところ、単純にst.switch_pageに遷移先のページを渡せばいいようです。各ページに3秒で次のページに遷移するように実装します。st.switch_page("pages/page1.py")↓すんなりと動きました🎉やりたいことが実現できることが分かったので、もう少し使いやすい形にしてみます。最終的な実装slide_show.pyを作成して、そこにページ遷移の処理をまとめました。スライドバーでスライドの表示時間を変更できるようにし、チェックボックスでスライドショーの開始/停止を切り替えられるようにしました。おまけとして、スライドショー中は進捗バーを表示してますが、これは冗長なので必要なければ削除してください。前のページの設定を引き継ぐために、st.session_stateを使っていますが、スライドバーとチェックボックスの初期値の渡し方によってはうまく動作しないパターンがあり、若干複雑になってしまいました。False各ページは、slide_showをインポートして、slide_showに遷移先のページを渡すだけになりました。気を付けるのは、slide_showの呼び出しはページの末尾に置くことです。slide_show("pages/page1.py")完成https://github.com/0msys/streamlit-slide-show-testまとめ今回確認した通り、Streamlitのダッシュボードを自動でスライドショーできるようになりました。選択肢が増えたのは嬉しいですね。APIで遊んでいますバッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。