スポンサーリンク

【Streamlit】処理実行確認メッセージの表示方法

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

Streamlitでボタンをクリックした際に確認ダイアログを表示し、ユーザーが「OK」を選択した場合のみ処理を実行するコードをメモしておきます。

Streamlit自体には確認ダイアログを直接表示する機能がないため、セッション(st.session_state)を利用してワークアラウンドを行います。

以下のコード例では、st.session_stateを利用して、ユーザーのアクション(「OK」ボタンや「キャンセル」ボタンのクリック)に基づいて表示内容を制御しています。

import streamlit as st

# 初期設定:ボタンクリック状態を管理するセッション変数の定義
if 'show_confirm' not in st.session_state:
    st.session_state.show_confirm = False  # 確認ボタンの表示状態
if 'action_performed' not in st.session_state:
    st.session_state.action_performed = False  # 処理実行状態

def reset_state():
    st.session_state.show_confirm = False
    st.session_state.action_performed = False

def confirm_action():
    st.session_state.show_confirm = True

def perform_action():
    st.session_state.action_performed = True
    st.session_state.show_confirm = False
    st.success('処理が正常に実行されました。')

def cancel_action():
    st.session_state.action_performed = True
    st.session_state.show_confirm = False
    st.info('処理はキャンセルされました。')

st.title('処理実行の確認デモ')

# メインの確認ボタン(「処理を実行しますか?」)
if not st.session_state.show_confirm and not st.session_state.action_performed:
    st.button('処理を実行しますか?', on_click=confirm_action)

# 確認メッセージと「OK」「キャンセル」ボタン
if st.session_state.show_confirm:
    st.write('本当に処理を実行しますか?')
    col1, col2 = st.columns(2)
    with col1:
        st.button('OK', on_click=perform_action)
    with col2:
        st.button('キャンセル', on_click=cancel_action)

# 処理実行後に状態リセットボタンを表示
if st.session_state.action_performed:
    st.button('別の処理を実行する', on_click=reset_state)

ユーザーが最初に「処理を実行しますか?」ボタンをクリックすると、確認メッセージと選択肢(「OK」「キャンセル」)が表示され、いずれかのボタンがクリックされると、対応するアクションが実行され、確認メッセージと選択肢は非表示になります。

また、処理をリセットするためのボタンも提供され、これによりユーザーは新たな処理を開始できます。

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