スポンサーリンク

【Streamlit】処理中メッセージを表示する方法

記事内に広告が含まれています。

Streamlitでは、バックエンドで長時間処理が必要な場合に、ユーザーにその状況を分かりやすく伝えるための「処理中メッセージ」を簡単に実装できます。

具体的なコード例を交えながら、処理中メッセージを表示する方法をまとめます。

スポンサーリンク

スピナー(spinner)の利用

Streamlitはst.spinnerというメソッドを提供しており、簡単に「処理中」のメッセージを表示できます。

基本構文

基本的なコードです。

import streamlit as st
import time

# 処理中メッセージを表示する
with st.spinner("処理中です。しばらくお待ちください..."):
    time.sleep(5)  # 例として5秒間の処理をシミュレート

st.success("処理が完了しました!")

with st.spinner("メッセージ"): の中に、処理を記述します。

処理が終了すると、自動的にスピナーが非表示になります。

処理完了後に、st.successなどを使って完了メッセージを表示することが推奨されます。

処理中のメッセージ表示は、以下のようになります。

条件付きで処理中メッセージを表示

ユーザーのアクション(例:ボタン押下)によって処理中メッセージを表示したい場合は、以下のように実装できます。

import streamlit as st
import time

if st.button("処理を開始"):
    with st.spinner("処理中です。しばらくお待ちください..."):
        time.sleep(3)  # 処理をシミュレート
    st.success("処理が完了しました!")

st.buttonでユーザーの操作をトリガーとしています。

ボタンがクリックされると、処理中メッセージが表示されます。

動的なメッセージを表示

処理の進行状況に応じてメッセージを動的に変更することも可能です。

import streamlit as st
import time

if st.button("処理を開始"):

    with st.spinner("🔄処理中"):

        # メッセージ表示用の空のプレースホルダーを作成
        message_placeholder = st.empty()

        time.sleep(2)
        # 動的にメッセージを更新
        message_placeholder.write("ステップ1を実行中...")
        time.sleep(2)
        message_placeholder.write("ステップ2を実行中...")
        time.sleep(2)

    # 処理完了後にメッセージをクリアし、成功メッセージを表示
    message_placeholder.empty()
    st.success("すべての処理が完了しました!")

st.writeで動的にメッセージを更新することで、ユーザーに進捗を示します。

実際のユースケースでの応用

以下は、ファイルのアップロード後に処理中メッセージを表示する例です。

import streamlit as st
import time

uploaded_file = st.file_uploader("ファイルをアップロードしてください")

if uploaded_file is not None:
    with st.spinner("ファイルを処理しています..."):
        time.sleep(3)  # 処理をシミュレート
    st.success("ファイルの処理が完了しました!")

ユーザーがファイルをアップロードしたタイミングで処理を開始します。

処理中にスピナーを表示し、終了後にメッセージを出します。

スポンサーリンク

プログレスバー(progress)の利用

st.progressを使うと、処理の進捗状況をバーで視覚的に示すことができます。

import streamlit as st
import time

if st.button("処理を開始"):
    progress_bar = st.progress(0)
    for i in range(101):
        time.sleep(0.05)  # 処理をシミュレート
        progress_bar.progress(i)
    st.success("処理が完了しました!")

st.progressを初期化し、進捗を更新します。

progress_bar.progress(値) で進捗バーの状態を更新できます。

まとめ

Streamlitでは、st.spinnerを使うことで簡単に処理中メッセージを表示できます。また、進行状況の表示やst.progressとの併用で、さらにユーザーフレンドリーなインターフェースを実現可能です。

スポンサーリンク
PythonStreamlit
著者SNS
タイトルとURLをコピーしました