【Streamlit】チェックボックスとラジオボタン:st.checkbox, st.radio

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

こんにちは、JS2IIUです。
前回のドロップダウンによる選択のUI要素紹介に続いて、今回は選択肢が表示された状態で選択するチェックボックスとラジオボックスについて説明します。今回もよろしくお願いします。

1. はじめに

Streamlitは、Pythonで簡単にWebアプリケーションを作るためのフレームワークです。その中でも「チェックボックス」や「ラジオボタン」といったウィジェットは、ユーザーからの入力を受け取るために非常に便利です。

この記事では、次の2つのウィジェットについて、使い方をステップバイステップで丁寧に解説します。

  • st.checkbox:オン/オフの真偽値を扱うチェックボックス
  • st.radio:複数の選択肢の中から1つを選ぶラジオボタン

2. st.checkbox の基本的な使い方

2-1. チェックボックスとは?

チェックボックスは、オン(✅)かオフ(⬜)の2択の状態をユーザーに選ばせるUI部品です。Streamlitではこのチェックの状態がTrue(チェックあり)またはFalse(チェックなし)として扱われます。

2-2. ステップバイステップで使ってみよう

ステップ1:ライブラリのインポート

まずはStreamlitをインポートします。

Python
import streamlit as st

ステップ2:チェックボックスの設置

Python
agree = st.checkbox('利用規約に同意します')

このコードで、画面に「利用規約に同意します」というチェックボックスが表示されます。

ステップ3:チェックの状態を使って処理を分岐

Python
if agree:
    st.write('ありがとうございます!')
else:
    st.write('同意が必要です。')

このように、チェック状態に応じて表示するメッセージを変えることができます。

2-3. 初期状態を設定するには?

チェックボックスの初期状態をオンにしたい場合は、value=True を指定します。

Python
st.checkbox('既定でオンにするチェックボックス', value=True)

3. st.radio の基本的な使い方

3-1. ラジオボタンとは?

ラジオボタンは、複数の選択肢の中から1つだけを選ばせるUI部品です。選択肢が排他的(どれか1つしか選べない)なのが特徴です。

3-2. ステップバイステップで使ってみよう

ステップ1:ラジオボタンを設置

Python
genre = st.radio(
    "好きなジャンルを選んでください",
    ("SF", "ファンタジー", "ミステリー")
)

ユーザーは3つの選択肢の中から1つを選ぶことができます。

ステップ2:選ばれた値を使う

Python
st.write(f"あなたの選んだジャンル:{genre}")

選ばれた値(ここでは文字列)が変数genreに格納され、それを使って画面に結果を表示できます。

3-3. 初期選択を変更するには?

デフォルトで2番目の選択肢を選ばせたい場合は、index=1 を指定します。

Python
st.radio("ジャンルを選択", ("SF", "ファンタジー", "ミステリー"), index=1)

4. st.checkbox と st.radio を組み合わせた実践例

簡単なアンケートアプリを作ってみよう

チェックボックスとラジオボタンを組み合わせることで、以下のような簡単なアンケートフォームを作ることができます。

Python
import streamlit as st

st.write("### 簡単なアンケート")

like_streamlit = st.checkbox("Streamlitが好きですか?")

if like_streamlit:
    level = st.radio("どれくらい好きですか?", ("ちょっと", "まあまあ", "とても"))
    st.write(f"レベル:{level}")
else:
    st.write("これから好きになるかもしれませんね!")

実行の流れ

  1. チェックボックスが表示されます。
  2. チェックするとラジオボタンが表示され、「ちょっと」「まあまあ」「とても」の中から選ぶことができます。
  3. 未チェックの状態ではラジオボタンは表示されません。

こういった条件付きの表示を使うと、ユーザーの入力に応じて動的にインターフェースを変えることができます。

5. よくある質問(FAQ)

Q1. チェックボックスやラジオボタンが反応しないのはなぜ?

  • Streamlitアプリは逐次的に実行されているため、変数の状態が再実行ごとに初期化される点に注意。
  • 状態を保持したい場合は、st.session_stateを活用しましょう(この記事では割愛)。

Q2. 選択肢にラベル以外の値を持たせたいときは?

  • optionsにリストで辞書やタプルを使うと、ラベルと値を分けられます(応用編)。

6. まとめ

  • st.checkbox は真偽値をユーザーに選ばせたいときに使う
  • 🔘 st.radio は複数の選択肢の中から1つを選ばせたいときに便利
  • 🔁 組み合わせることで、インタラクティブなフォームを作ることができる

Streamlitはコード量が少なくても、柔軟で分かりやすいUIが作れるのが魅力です。ぜひチェックボックスやラジオボタンを活用して、使いやすいアプリを作ってみてください!

7. 参考リンク

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

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

コメント

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