サイトアイコン アマチュア無線局JS2IIU

【Streamlit】UI要素カタログ

Streamlit, UI要素カタログ

こんにちは、JS2IIUです。
Streamlitは、Pythonで高速にインタラクティブなWebアプリケーションを開発できるライブラリです。本記事では、公式ドキュメントを参考にしながら、Streamlitで利用可能な全UI要素(ウィジェット)について、すべての指定可能なパラメータとともに、具体的な使用例コード付きで丁寧に解説します。今回もよろしくお願いします。

1. ボタン・入力関連ウィジェット

🔘 st.button

Python
st.button(
    label,
    key=None,
    help=None,
    on_click=None,
    args=None,
    kwargs=None,
    type="secondary",
    disabled=False,
    use_container_width=False
)

使用例:

Python
if st.button("クリックしてください"):
    st.write("ボタンが押されました")

💾 st.download_button

Python
st.download_button(
    label,
    data,
    file_name=None,
    mime=None,
    key=None,
    help=None,
    on_click=None,
    args=None,
    kwargs=None,
    disabled=False,
    use_container_width=False
)

使用例:

Python
text = "ダウンロードする内容です"
st.download_button("テキストをダウンロード", text, file_name="example.txt")

☑️ st.checkbox

Python
st.checkbox(
    label,
    value=False,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
if st.checkbox("表示する"):
    st.write("チェックされました")

📻 st.radio

Python
st.radio(
    label,
    options,
    index=0,
    format_func=str,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    horizontal=False,
    label_visibility="visible"
)

使用例:

Python
genre = st.radio("好きなジャンルは?", ["SF", "ファンタジー", "ホラー"])
st.write("選択:", genre)

🔽 st.selectbox

Python
st.selectbox(
    label,
    options,
    index=0,
    format_func=str,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
option = st.selectbox("好きな色を選んでください", ["", "", ""])
st.write("選択された色:", option)

✅ st.multiselect

Python
st.multiselect(
    label,
    options,
    default=None,
    format_func=str,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    max_selections=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
options = st.multiselect("好きなフルーツを選んでください", ["りんご", "バナナ", "みかん"])
st.write("選択:", options)

🎚️ st.slider

Python
st.slider(
    label,
    min_value=None,
    max_value=None,
    value=None,
    step=None,
    format=None,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
num = st.slider("数値を選択", 0, 100, 50)
st.write("選んだ値:", num)

🔘 st.select_slider

Python
st.select_slider(
    label,
    options=None,
    value=None,
    format_func=str,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
level = st.select_slider("難易度を選択", options=["Easy", "Medium", "Hard"])
st.write("選択:", level)

📝 st.text_input

Python
st.text_input(
    label,
    value="",
    max_chars=None,
    key=None,
    type="default",
    help=None,
    autocomplete=None,
    on_change=None,
    args=None,
    kwargs=None,
    placeholder=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
name = st.text_input("名前を入力してください")
st.write("入力された名前:", name)

🧾 st.text_area

Python
st.text_area(
    label,
    value="",
    height=None,
    max_chars=None,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    placeholder=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
text = st.text_area("コメントを入力")
st.write("入力されたコメント:", text)

📅 st.date_input

Python
st.date_input(
    label,
    value=None,
    min_value=None,
    max_value=None,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
date = st.date_input("日付を選択")
st.write("選んだ日付:", date)

⏰ st.time_input

Python
st.time_input(
    label,
    value=None,
    step=timedelta(minutes=15),
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
time = st.time_input("時間を選択")
st.write("選んだ時間:", time)

📁 st.file_uploader

Python
st.file_uploader(
    label,
    type=None,
    accept_multiple_files=False,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
uploaded_file = st.file_uploader("ファイルをアップロード")
if uploaded_file:
    st.write(uploaded_file.name)

📷 st.camera_input

Python
st.camera_input(
    label,
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
picture = st.camera_input("写真を撮ってください")
if picture:
    st.image(picture)

🎨 st.color_picker

Python
st.color_picker(
    label,
    value="#000000",
    key=None,
    help=None,
    on_change=None,
    args=None,
    kwargs=None,
    disabled=False,
    label_visibility="visible"
)

使用例:

Python
color = st.color_picker("色を選んでください")
st.write("選んだ色:", color)

2. 表示系ウィジェット

📊 st.dataframe

Python
st.dataframe(
    data,
    width=None,
    height=None,
    use_container_width=False,
    hide_index=False,
    column_order=None,
    column_config=None
)

使用例:

Python
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
st.dataframe(df)

🧮 st.table

Python
st.table(data)

使用例:

Python
st.table(df)

📈 st.metric

Python
st.metric(
    label,
    value,
    delta=None,
    delta_color="normal",
    help=None,
    label_visibility="visible"
)

使用例:

Python
st.metric(label="売上", value="¥1,000,000", delta="+5%")

🔢 st.json

Python
st.json(body, expanded=True)

使用例:

Python
st.json({"名前": "田中", "年齢": 30})

💻 st.code

Python
st.code(body, language="python", line_numbers=False)

使用例:

Python
code = '''
def hello():
    print("Hello Streamlit!")
'''
st.code(code, language="python")

3. データ編集ウィジェット

✍️ st.data_editor

Python
st.data_editor(
    data,
    width=None,
    height=None,
    use_container_width=False,
    hide_index=False,
    column_order=None,
    column_config=None,
    num_rows="fixed",
    disabled=False,
    key=None,
    on_change=None,
    args=None,
    kwargs=None
)

使用例:

Python
edited_df = st.data_editor(df)
st.write("編集結果:", edited_df)

スクショ通りの表示をさせるコード全体:

Python
import streamlit as st

import pandas as pd
# サンプルデータフレームの作成
data = {
    "名前": ["Alice", "Bob", "Charlie", "David"],
    "年齢": [25, 30, 35, 40],
    "職業": ["Engineer", "Doctor", "Artist", "Teacher"]
}
df = pd.DataFrame(data)

edited_df = st.data_editor(df)
st.write("編集結果:", edited_df)

4. その他UI

📋 st.form

Python
with st.form(key):
    ...
    submitted = st.form_submit_button("送信")

使用例:

Python
with st.form("my_form"):
    name = st.text_input("名前")
    age = st.slider("年齢", 0, 100)
    submitted = st.form_submit_button("送信")
    if submitted:
        st.write(f"名前: {name}, 年齢: {age}")

まとめ

Streamlitでは、豊富なUI要素をPythonコードだけで簡単に使えます。本記事で紹介したウィジェットは、ユーザーとのインタラクションを活性化し、データ分析やアプリの可能性を広げてくれます。公式ドキュメントにも随時新機能が追加されるため、常にチェックしておくことをおすすめします。

🔗 参考リンク

当ブログのStreamlit関連記事一覧です。こちらも参考にしていただけますと幸いです。ぜひご覧ください。

Streamlit
PythonのWEBフレームワークであるStreamlitについての記事を集めたページです。

最後まで読んでいただきありがとうございます。
もし気になることがあればコメント欄で気軽にお知らせください。

モバイルバージョンを終了