Callback st.form_submit_button

Summary

Hello
Iā€™m using the st.form component through a modal (from streamlit_modal import Modal), and it has a st.text_input, when I put a method for the buttonā€™s callback, it doesnā€™t get the information typed in the text_input, what can I do? wrong ?

Steps to reproduce

Code snippet:

import streamlit as st
from streamlit_modal import Modal
from datetime import datetime, timedelta
import time
import pyodbc
import pandas as pd

def filtros(dtde,dtate,cliente,cidade,estado,vendedor,transp,ranking):
      st.session_state.rankingvendas = ranking
      sql = ""
      sql = sql + " and between '{} 00:00:00' and '{} 23:59:00'".format(dtde, dtate)
      if cliente != "":
          sql = sql + " and TB01008_nome like '{}%' ".format(cliente)
      if cidade != "": 
         sql = sql + " and TB00012_cidade = '{}' ".format(cidade)
      if estado != "[Todos]": 
         sql = sql + " and TB00012_estado = '{}' ".format(estado)
      if vendedor != "[Todos]": 
         sql = sql + " and tb01006_nome = '{}' ".format(vendedor) 
      if transp != "[Todos]": 
         sql = sql + " and tb01009_nome = '{}' ".format(transp) 
      st.session_state.filtrovendas += sql 

  
    
def abrirmodal():
    modal = Modal("Controle de Vendas", 0, 5, 800) 
    time.sleep(0.5)
    modal.open()
    if modal.is_open():
        with modal.container():
             frm = st.form("Filtros") 
             with frm:
                 now = datetime.now()
                 col1, col2, col3 = st.columns([0.25, 0.25, 0.50])
               
                 with col1:
                     dtde = st.date_input("Periodo de Vendas de:", value=now - timedelta(days=365))
                 with col2:    
                     dtate = st.date_input("Periodo de Vendas atƩ :", value=now)
                 with col3:       
                     ranking = st.slider("Ranking (GrƔfico)", 5, 15, st.session_state.rankingvendas)    
               
                
                 col1, col2, col3 = st.columns([0.50, 0.30, 0.20])
                 with col1:
                     cliente = st.text_input("Nome do Cliente :", placeholder="Digite o nome")
                 with col2:    
                     cidade = st.text_input("Cidade :", placeholder="Digite a Cidade")
                 with col3:       
                     estado = st.selectbox("UF :",
                                        ("[Todos]","AC","AL","AM","AP","BA","CE","DF","ES","GO",
                                         "MA","MG","MS","MT","PA","PB","PE","PI","PR","RJ",
                                         "RN","RO","RR","RS","SC","SE","SP","TO","EX"))
          
                 listavendedor = listar_vendedor() 
                 vendedor = st.selectbox("Selecione o Vendedor :",listavendedor);

                 listatransp = listar_transp()
                 transp = st.selectbox("Selecione a Transportadora :",listatransp);
                 st.write(st.session_state.filtrovendas) 
                 st.form_submit_button('Aplicar',on_click=filtros(dtde,dtate,cliente,cidade,estado,vendedor,transp,ranking))   
                 
              
              
    

    
                 
def listar_vendedor():
    conexao = ("Driver={SQL Server};Server=localhost;Database=Dataclassic;UID=sa;PWD=sidney;") 
    dados = pyodbc.connect(conexao)
    cursor = dados.cursor()
    sql = """
          select '[Todos]'
          union
          select tb01006_nome as nome from tb01006 where tb01006_situacao = 'A' and tb01006_nome is not null 
          order by 1 """
    cursor.execute(sql)
    valores = cursor.fetchall()
    tabela = pd.DataFrame.from_records(valores)
    return tabela

def listar_transp():
    conexao = ("Driver={SQL Server};Server=localhost;Database=Dataclassic;UID=sa;PWD=sidney;") 
    dados = pyodbc.connect(conexao)
    cursor = dados.cursor()
    sql = """
          select '[Todos]'
          union
          select tb01009_nome as nome from tb01009 where tb01009_inativo = 'N' and tb01009_nome is not null 
          order by 1 """
    cursor.execute(sql)
    valores = cursor.fetchall()
    tabela = pd.DataFrame.from_records(valores)
    return tabela

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