How to make the value loaded into the input and edited be updated to the selectbox?

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()

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.