Why are the results of checkbox and button different after selection?
import streamlit as st
def outJSON():
jsonClass ={"dict1": {"A": agree1,
"B": agree2,
"C": agree3,
"D": agree4,
"E": agree5}}
return jsonClass
# =========================================================
# return error
def stream_return():
st.write(outJSON())
# =========================================================
A_col1, A_col2 , _ = st.columns(3)
with A_col2:
BU3 = st.button('out',key ='button3')
B_col1, B_col2, B_col3, B_col4, B_col5 = st.columns(5)
with B_col1:
agree1 = st.checkbox('A', key = 'checkbox1',
on_change = stream_return)
with B_col2:
agree2 = st.checkbox('B', key = 'checkbox2',
on_change = stream_return)
with B_col3:
agree3 = st.checkbox('C', key = 'checkbox3',
on_change = stream_return)
with B_col4:
agree4 = st.checkbox('D', key = 'checkbox4',
on_change = stream_return)
with B_col5:
agree5 = st.checkbox('E', key = 'checkbox5',
on_change = stream_return)
# =========================================================
# return correct
if BU3:
st.write(outJSON())
# =========================================================
Solution (update)
The value of agree1
, agree2
, etc. are not updated until after the stream_return
function runs.