こんにちは、JS2IIUです。
Streamlitでは簡単にUIが構築できるだけでなく、ボタンなどのユーザー操作を受け付ける要素も簡単に配置できてしまうのも魅力の一つだと思います。今回もよろしくお願いします。
1. はじめに
Streamlit は、Python のコードだけで手軽に Web アプリケーションが作れる便利なフレームワークです。本記事では、Streamlit の入力ウィジェットのひとつである st.button に焦点を当てて解説します。
ボタンをクリックしたときに処理を実行したり、画面の内容を変えたりするのは、Web アプリではよく使われる基本機能です。この記事では、ボタンの基本的な使い方から、クリックイベントの処理方法、さらにはちょっとした応用例まで、ステップバイステップでわかりやすく紹介していきます。
2. st.button とは?
✔️ st.buttonの役割
st.button は、Streamlit で使える「ボタン」のウィジェットです。
ユーザーがボタンをクリックしたかどうかを検出し、クリックされたときに何らかの処理を実行するのに使います。
✔️ 主な用途の例
- ユーザーの入力を受け取って処理を開始する
- データの再読み込みや更新処理を行う
- 表示する内容を切り替える など
3. 基本的な使い方
ここでは、最もシンプルな st.button の使い方を紹介します。
✅ ステップ1:Streamlit のインストール(未インストールの場合)
pip install streamlit✅ ステップ2:サンプルコードの作成

import streamlit as st
st.title("ボタンの基本的な使い方")
if st.button("クリックしてね"):
st.write("ボタンが押されました!")このコードを app.py などの名前で保存し、以下のコマンドで実行します。
streamlit run app.py✅ 解説
st.button("クリックしてね"):ボタンを画面上に表示します。if文で囲むことで、ボタンが押されたときだけ中の処理が実行されます。st.write("ボタンが押されました!")はクリック時に表示するメッセージです。
4. ボタンの応用例:カウンターアプリを作ろう
ボタンを押すたびにカウントが増える、簡単なアプリを作ってみましょう。
✅ ステップ1:コードを書く
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":ボタンの見た目を変える |
✅ サンプルコード:引数を活用する
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著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。
最後まで読んでいただきありがとうございます。


コメント