目前的问题,点击按钮之后才会有下面的内容,但是触发了下拉框下面的内容又会消失
初始代码
import streamlit as st
if st.button('获取'):
lists = ['a', 'b', 'c', 'd', 'e']
selected_opt = st.selectbox('列表', lists, index=None)
if selected_opt: st.write('选择的值:' + selected_opt)
原因
按下按钮后,按钮值为
true
,Streamlit 从上到下重新运行代码,检查按钮是否被点击(true
)并读取下一个代码,点击选择框,选择后,streamlit 再次从上到下重新运行代码,这个时候if st.button()
按钮的值为false
,所以它无法进入选择框
解决
import streamlit as st
from streamlit import session_state as ss
if "btn_state" not in ss: ss.btn_state = False
if st.button('获取'):
ss.btn_state = True
if ss.btn_state:
lists = ['a', 'b', 'c', 'd', 'e']
selected_opt = st.selectbox('列表', lists, index=None)
if selected_opt: st.write('选择的值:' + selected_opt)