スポンサーリンク

【Streamlit】ボタンのon_clickを使う方法

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

Streamlitでは、ボタンをクリックした際に特定の処理を実行させるためにon_click引数を使用できます。

この引数に関数を渡すことで、ユーザーがボタンをクリックしたときにその関数が実行されます。

on_clickの基本的な使い方をまとめます。

スポンサーリンク

使い方

まずは、ボタンをクリックした際に関数を実行する基本的な例を見てみましょう。

import streamlit as st

# 実行する関数を定義
def say_hello():
    st.write("Hello, Streamlit!")

# ボタンを配置し、on_clickに関数を指定
st.button("Click Me", on_click=say_hello)

say_hello関数が定義されています。

この関数は、ボタンをクリックした際に"Hello, Streamlit!"と表示します。

st.buttonon_click=say_helloを指定することで、ボタンがクリックされるとsay_helloが実行されます。

スポンサーリンク

関数に引数を渡す方法

場合によっては、ボタンをクリックした際に実行される関数に引数を渡したいことがあります。

その場合は、argskwargsを使用します。

import streamlit as st

# 実行する関数を定義
def greet(name):
    st.write(f"Hello, {name}!")

# ボタンを配置し、on_clickに関数と引数を指定
st.button("Greet", on_click=greet, args=("Alice",))

greet関数は、渡された名前を使って挨拶を表示します。

args=("Alice",)を指定することで、"Alice"という引数がgreet関数に渡されます。

kwargsを使った例は以下のとおりです。

st.button("Greet", on_click=greet, kwargs={"name": "Bob"})

複数のボタンで異なる処理を実行

複数のボタンを配置して、それぞれ異なる処理を実行する例です。

import streamlit as st

def process_a():
    st.write("Processing A...")

def process_b():
    st.write("Processing B...")

st.button("Process A", on_click=process_a)
st.button("Process B", on_click=process_b)

ボタンの状態管理

st.session_stateを利用して、ボタンのクリック状態を管理することができます。

import streamlit as st

# ボタンが押されたときの処理
def toggle_state():
    st.session_state["button_clicked"] = not st.session_state.get("button_clicked", False)

# 初期状態の設定
if "button_clicked" not in st.session_state:
    st.session_state["button_clicked"] = False

# ボタンを配置
st.button("Toggle", on_click=toggle_state)

# 状態に応じてメッセージを表示
if st.session_state["button_clicked"]:
    st.write("Button is ON")
else:
    st.write("Button is OFF")

st.session_stateを使ってボタンがクリックされた状態をトグルしています。

ボタンがクリックされるたびに状態が変わり、それに応じてメッセージを切り替えています。

実用例 フォームの送信ボタン

ボタンを使った簡単なフォームの例です。

import streamlit as st

def submit_form():
    st.write("Form submitted!")
    st.write(f"Name: {st.session_state['name']}")
    st.write(f"Email: {st.session_state['email']}")

# 入力フィールド
st.text_input("Name", key="name")
st.text_input("Email", key="email")

# 送信ボタン
st.button("Submit", on_click=submit_form)

入力フィールドの値はst.session_stateに格納されています。

submit_form関数でそれらの値を取得してフォーム送信時に表示します。

まとめ

Streamlitのボタンでon_clickを活用することで、ユーザーインタラクションを簡単に実現できます。

関数を直接渡すだけでなく、argskwargsを使って柔軟に引数を指定可能です。また、st.session_stateを使うことで、ボタンの状態やクリック結果をアプリ全体で管理できます。

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