import streamlit as st
def main():
st.title(“Streamlit App”)
st.subheader(“Hello Streamlit”)
# Inicializa a chave 'current_selection' e 'submitted_values' no session_state se não existir.
if 'current_selection' not in st.session_state:
st.session_state.current_selection = ''
if 'submitted_values' not in st.session_state:
st.session_state.submitted_values = ''
# Cria um selectbox e automaticamente vincula a seleção à chave 'selected_option' no session_state.
# A função on_option_change é chamada sempre que a opção selecionada muda.
selected_option = st.selectbox('Selecione um item:', ['','Maçã', 'Banana', 'Uva'], index=0, key='selected_option',
on_change=on_option_change)
with st.form(key='my_form'):
# Garante que o valor de 'current_selection' seja usado para o text_input.
item_input = st.text_input("Item", value=st.session_state.current_selection, key='item_input')
# Botão de submit para demonstrar a manipulação do formulário.
# Modificação: Agora passa a função `save_and_clear_selection` como parâmetro `on_click`.
submitted = st.form_submit_button("Submit", on_click=save_and_clear_selection)
# Atualiza o valor selecionado no selectbox quando o texto é editado.
if item_input and item_input != st.session_state.current_selection:
st.session_state.current_selection = item_input
# Mostra os valores submetidos antes de serem limpos, se algum valor tiver sido submetido.
if st.session_state.submitted_values:
st.info("Resultado")
st.write(st.session_state.submitted_values)
def save_and_clear_selection():
# Captura os valores antes de limpar
st.session_state.submitted_values = f"Item: {st.session_state.current_selection}, Selected Option: {st.session_state.selected_option}"
# Limpa os valores
clear_selection()
def clear_selection():
st.session_state[“selected_option”] = “”
st.session_state[“current_selection”] = “”
Função chamada quando a seleção do selectbox muda.
def on_option_change():
# Atualiza ‘current_selection’ com a opção selecionada.
st.session_state.current_selection = st.session_state.selected_option
if name == “main”:
main()