コンテンツにスキップ

【実践チャレンジその5】

第5章の総まとめです。 ここがStreamlitの最大の難所です。これができれば、あなたはもう初心者卒業です!

下のアプリは「追加」ボタンを押しても、一瞬表示されるだけでリストに追加されません(すぐに空に戻ってしまいます)。 st.session_state を使って、アイテムが正しく保持されるように修正してください。

ヒント:

  1. shopping_list = [] だと毎回リセットされます。
  2. if "key" not in st.session_state: で初期化しましょう。
  3. リストへの追加・表示もすべて st.session_state[...] 経由で行います。

クリックして解答コードを見る
challenge_solution.py
import streamlit as st
st.title("買い物リスト 🍎")
# 1. Session Stateの初期化
if "shopping_list" not in st.session_state:
st.session_state["shopping_list"] = []
# 入力フォーム
item = st.text_input("買うものを入力")
if st.button("追加"):
if item:
# 2. Session Stateへの追加
st.session_state["shopping_list"].append(item)
st.success(f"「{item}」を追加しました")
# リストの表示
st.write("### 現在のリスト")
# 3. Session Stateからの読み出し
for x in st.session_state["shopping_list"]:
st.write(f"- {x}")
if len(st.session_state["shopping_list"]) == 0:
st.info("まだリストは空です")