回答編集履歴
2
ソースにコメントを追加
answer
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
|
14
14
|
get_data_source = st.sidebar.button("データ取得、更新")
|
15
15
|
if get_data_source:
|
16
|
+
# 取得したデータは session_state オブジェクトに保存します
|
16
17
|
st.session_state.hoge = 3
|
17
18
|
st.text("データ取得しました。")
|
18
19
|
|
1
説明を追加、説明を書き換え
answer
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
ユーザがウィジットを操作するたびに、スクリプト全体が再度実行されます。このため、スクリプトのトップレベルに`hoge = 1`があると、その度にhogeは1に初期化されることになります。
|
2
|
+
|
1
|
-
Session State
|
3
|
+
Session State オブジェクトを用いると、ユーザ操作によるスクリプトの再実行を跨いで、値を保持できるようです。
|
2
4
|
[https://docs.streamlit.io/library/api-reference/session-state](https://docs.streamlit.io/library/api-reference/session-state)
|
3
5
|
|
4
6
|
```python
|
@@ -7,17 +9,17 @@
|
|
7
9
|
|
8
10
|
mode_list = ["a機能", "b機能"]
|
9
11
|
func_sel = st.sidebar.selectbox("機能を選んでください", mode_list)
|
12
|
+
# hoge = 1
|
10
13
|
|
11
|
-
# データ取得処理
|
12
14
|
get_data_source = st.sidebar.button("データ取得、更新")
|
13
15
|
if get_data_source:
|
14
|
-
# 何らかのデータ取得処理を記載(ボタン押下時のみ取ってくるようにする)
|
15
16
|
st.session_state.hoge = 3
|
16
17
|
st.text("データ取得しました。")
|
17
18
|
|
18
19
|
try:
|
19
20
|
st.text(f"hoge:{st.session_state.hoge}")
|
20
21
|
except AttributeError:
|
22
|
+
# st.session_state.hoge に値が保持されていない時のみ最初の読み込みと判断し初期化を行います
|
21
23
|
st.session_state.hoge = 1
|
22
24
|
st.text(f"hoge:{st.session_state.hoge}")
|
23
25
|
|