【Streamlit】入力ウィジェットを使ってみよう:st.button

Streamlit
この記事は約6分で読めます。

こんにちは、JS2IIUです。
Streamlitでは簡単にUIが構築できるだけでなく、ボタンなどのユーザー操作を受け付ける要素も簡単に配置できてしまうのも魅力の一つだと思います。今回もよろしくお願いします。

1. はじめに

Streamlit は、Python のコードだけで手軽に Web アプリケーションが作れる便利なフレームワークです。本記事では、Streamlit の入力ウィジェットのひとつである st.button に焦点を当てて解説します。

ボタンをクリックしたときに処理を実行したり、画面の内容を変えたりするのは、Web アプリではよく使われる基本機能です。この記事では、ボタンの基本的な使い方から、クリックイベントの処理方法、さらにはちょっとした応用例まで、ステップバイステップでわかりやすく紹介していきます。

2. st.button とは?

✔️ st.buttonの役割

st.button は、Streamlit で使える「ボタン」のウィジェットです。
ユーザーがボタンをクリックしたかどうかを検出し、クリックされたときに何らかの処理を実行するのに使います。

✔️ 主な用途の例

  • ユーザーの入力を受け取って処理を開始する
  • データの再読み込みや更新処理を行う
  • 表示する内容を切り替える など

3. 基本的な使い方

ここでは、最もシンプルな st.button の使い方を紹介します。

✅ ステップ1:Streamlit のインストール(未インストールの場合)

Bash
pip install streamlit

✅ ステップ2:サンプルコードの作成

Python
import streamlit as st

st.title("ボタンの基本的な使い方")

if st.button("クリックしてね"):
    st.write("ボタンが押されました!")

このコードを app.py などの名前で保存し、以下のコマンドで実行します。

Bash
streamlit run app.py

✅ 解説

  • st.button("クリックしてね"):ボタンを画面上に表示します。
  • if 文で囲むことで、ボタンが押されたときだけ中の処理が実行されます。
  • st.write("ボタンが押されました!") はクリック時に表示するメッセージです。

4. ボタンの応用例:カウンターアプリを作ろう

ボタンを押すたびにカウントが増える、簡単なアプリを作ってみましょう。

✅ ステップ1:コードを書く

Python
import streamlit as st

st.title("カウンターアプリ")

# セッションステートにカウント変数を用意
if "count" not in st.session_state:
    st.session_state.count = 0

# ボタンが押されたらカウントを増やす
if st.button("カウントする"):
    st.session_state.count += 1

# 現在のカウントを表示
st.write(f"カウント: {st.session_state.count}")

✅ 解説:セッションステートとは?

  • 通常、Streamlit は再実行のたびに変数が初期化されてしまいます。
  • そのため、クリック数を記録するには st.session_state を使って「状態」を保持する必要があります。
  • st.session_state.count += 1 でカウントを加算します。

5. st.button の引数を詳しく見てみよう

st.button にはいくつかの便利な引数(オプション)が用意されています。主なものだけを紹介します。詳しくはこちらの公式ドキュメントをご覧ください。st.button – Streamlit Docs

引数名説明
labelボタンに表示する文字列(省略時は必須の第1引数)
keyボタンに一意の識別子を与える
helpホバー時に表示されるツールチップ
type"primary" または "secondary":ボタンの見た目を変える

✅ サンプルコード:引数を活用する

Python
import streamlit as st

st.button(
    label="送信",
    key="submit_btn",
    help="送信ボタンです",
    type="primary"
)
  • type="primary" にすると、ボタンが目立つ色になります。
  • help を設定すると、マウスオーバーで補足情報が表示されます。

6. よくあるエラーと対処法

現象原因対処法
ボタンを押しても何も起こらないif 文の処理が正しく書かれていないインデントやブロックを確認
カウントがリセットされてしまうセッションステートを使っていないst.session_state で状態を保持
複数のボタンを使ったときに動作が競合するkey が同じになっている各ボタンに異なる key を設定

7. まとめ

  • st.button は、Streamlit における基本的な入力ウィジェットの一つです。
  • if st.button(): の形式で、クリックされたときの処理が簡単に書けます。
  • st.session_state を使えば、ボタンを押した履歴や回数などの状態管理も簡単にできます。
  • 引数をうまく使えば、ボタンの見た目や振る舞いを柔軟にコントロールできます。

Streamlit を使ったインタラクティブなアプリの第一歩として、st.button の使い方をぜひマスターしてみてください!

8. 参考リンク

最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。

最後まで読んでいただきありがとうございます。

コメント

タイトルとURLをコピーしました