Streamlight的功能与终端不同。当你把一个小部件放在脚本中时,Streamlight会直接通过它,输出是它的默认值。(在表单的情况下,在单击提交按钮之前,小部件输出不会更新,因此当用户在其他地方填写信息或与应用程序交互时,它们将返回默认值,提交按钮将返回False。)
你的职能只是
return None
在任何不是由提交按钮引起的页面加载上单击。
无论您在哪里调用函数,都需要检查它返回的值,以了解如何继续。例如(按原样填写函数的返回):
def run_intro_completion(self, game):
with st.form(key=âmy_form2â):
intro_dialogue = st.text_input(label=âIntroduce yourselfâ)
submit_button = st.form_submit_button(label=âSubmitâ)
num_tokens = 0
if submit_button:
return (intro_dialogue, num_tokens, submit_button)
# else:
return None
假设您将对象存储在
st.session_state.my_state
state = st.session_state.my_state
result = state.run_intro_completion(my_game)
if result is not None:
# Do processing
我不知道你的应用程序的更大结构是什么,所以它可能需要处理其他基本细节,才能适当地处理Streamlit的逻辑结构,即在每次交互时从头到脚重新运行整个脚本。确保要连续更改或构建的任何对象都存储在
st.session_state
正如我所暗示的。