2
respostas

[Sugestão] Sugestão para quem não está conseguindo imprimir o resultado após clicar no botão Simular

Pessoal, estou deixando aqui como ficou meu código, pois precisei modificar algumas coisas, não estava imprimindo o resultado do simulador quando clicava no botão "Simular", então tive que adicionar uma variável chamada output. Segue como ficou:

# Importando bibliotecas
from ipywidgets import widgets, HBox, VBox
from IPython.display import display

# Criando os controles do formulário
area = widgets.Text(description="Área")
garagem = widgets.Text(description="Garagem")
banheiros = widgets.Text(description="Banheiros")
lareira = widgets.Text(description="Lareira")
marmore = widgets.Text(description="Mármore?")
andares = widgets.Text(description="Andares?")

botao = widgets.Button(description="Simular")
output = widgets.Output()

# Posicionando os controles
left = VBox([area, banheiros, marmore])
right = VBox([garagem, lareira, andares])
inputs = HBox([left, right])

# Função de simulação
def simulador(sender):
    entrada=[[
                float(area.value if area.value else 0), 
                float(garagem.value if garagem.value else 0), 
                float(banheiros.value if banheiros.value else 0), 
                float(lareira.value if lareira.value else 0), 
                float(marmore.value if marmore.value else 0), 
                float(andares.value if andares.value else 0)
             ]]
    with output:
        output.clear_output()
        print('$ {0:.2f}'.format(lm_new.predict(entrada)[0]))
    
# Atribuindo a função "simulador" ao evento click do botão
botao.on_click(simulador)    
2 respostas

Olá Amanda, tudo bem com você?

Obrigado por contribuir com a comunidade Alura e compartilhar a solução para esse impasse, com certeza poderá ajudar outras pessoas que passem por problemas parecidos.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Só para complementar, mas sem esse código o resultado é exibido no 'Log', e com ele, caso você não efetue a atualização do código 'display', ele acaba não sendo impresso em nada, portanto, não esqueça de fazer essa alteração.

display(inputs, botao, output)