Streamlit

Fonte: Wikiversidade

Neste tutorial, exploraremos o Streamlit, uma biblioteca Python capaz criar aplicativos da web de forma rápida e fácil. Com ela é possível transformar seu código Python em aplicativos interativos com apenas algumas linhas de código.


Instalação[editar | editar código-fonte]

Antes de começarmos, vamos garantir que o Streamlit esteja instalado em nosso ambiente Python. Você pode instalar a biblioteca usando pip:

pip install streamlit


Primeiro aplicativo[editar | editar código-fonte]

Vamos criar um aplicativo simples que exibe um título e uma mensagem.

import streamlit as st

# Título
st.title('Meu Primeiro Aplicativo Streamlit')

# Mensagem
st.write('Bem-vindo ao Streamlit!')


Salve este código em um arquivo Python (por exemplo, app.py e execute-o no terminal:

streamlit run app.py

Depois de executar este comando, você verá uma saída parecida com essa:

You can now view your Streamlit app in your browser.

Local URL: http://localhost:8501
Network URL: http://192.168.0.20:8501

Isso significa que seu aplicativo está sendo executado localmente. Você pode acessá-lo em seu navegador usando o URL fornecido. O URL local é para visualização no mesmo dispositivo onde o aplicativo está sendo executado, enquanto o URL da rede pode ser usado para acessar o aplicativo em outros dispositivos na mesma rede local.

Tela do Aplicativo feito com Streamlit
Tela do Aplicativo feito com Streamlit



Widgets Interativos[editar | editar código-fonte]

Uma das principais funcionalidades do Streamlit é a criação de widgets interativos.

Vamos explorar alguns deles:


Texto e Markdown[editar | editar código-fonte]

st.title("Título")
st.header("Cabeçalho")
st.subheader("Subtítulo")
st.write("Este é um parágrafo de texto")
st.markdown("**Markdown** é suportado")


Botões[editar | editar código-fonte]

if st.button('Clique aqui'):
    st.write('Botão clicado!')
Tela do Aplicativo feito com Streamlit
Tela do Aplicativo feito com Streamlit

Caixa de Opção[editar | editar código-fonte]

opcao = st.checkbox('Mostrar/Esconder')
if opcao:
    st.write('Caixa de seleção marcada!')


Caixa de Seleção[editar | editar código-fonte]

opcao = st.selectbox("Escolha uma opcao:", ["Opção 1", "Opção 2", "Opção 3"])
st.write('Você selecionou:', opcao)

Entrada de Texto[editar | editar código-fonte]

text = st.text_input('Digite algo')
st.write('Você digitou:', text)

Sliders[editar | editar código-fonte]

number = st.slider('Escolha um número', 0, 100, 50)
st.write('Número selecionado:', number)

Upload de arquivos[editar | editar código-fonte]

file = st.file_uploader("Escolha um arquivo")

Calculadora de IMC[editar | editar código-fonte]

Agora que vimos o básico da biblioteca, vamos criar um aplicativo de Calculadora de IMC (Índice de Massa Corporal) utilizando as funcionalidades do Streamlit, incluindo widgets interativos e integração de componentes personalizados.

import streamlit as st

# Título
st.title('Calculadora de IMC')

# Widgets para entrada de dados
altura = st.slider('Altura (em metros)', 1.0, 2.1, 1.7, 0.01)
peso = st.slider('Peso (em kg)', 20, 150, 70, 1)
sexo = st.selectbox('Sexo', ['Masculino', 'Feminino'])

Criamos os widgets interativos para permitir que o usuário insira sua altura, peso e sexo. Utilizamos um slider para altura e peso, e um seletor para o sexo.


# Cálculo do IMC
if sexo == 'Masculino':
    imc = peso / (altura ** 2)
else:
    imc = 1.3 * peso / (altura ** 2)

Calculamos o IMC com base nos valores inseridos pelo usuário. Utilizamos diferentes fórmulas de acordo com o sexo selecionado: uma fórmula para homens e outra para mulheres.


# Interpretando o IMC
if imc < 18.5:
    interpretacao = 'Abaixo do peso'
    orientacao = 'Você está abaixo do peso. Consulte um médico ou nutricionista para orientação.'
elif imc < 24.9:
    interpretacao = 'Peso normal'
    orientacao = 'Você está com o peso considerado normal para sua altura. Continue com hábitos saudáveis.'
elif imc < 29.9:
    interpretacao = 'Sobrepeso'
    orientacao = 'Você está com sobrepeso. Considere fazer mudanças na dieta e praticar exercícios.'
else:
    interpretacao = 'Obesidade'
    orientacao = 'Você está obeso. Consulte um médico para orientação e acompanhamento.'

Interpretamos o IMC calculado e fornecemos uma mensagem correspondente, classificando-o em categorias como abaixo do peso, peso normal, sobrepeso ou obesidade. Também fornecemos orientações adicionais de saúde com base na interpretação do IMC.


# Exibindo o resultado
st.write('## Resultado')
st.write(f'Seu IMC é {imc:.2f}.')
st.write(f'Interpretação: {interpretacao}.')
st.write(f'Orientação: {orientacao}')

Exibimos o resultado do cálculo do IMC, sua interpretação e as orientações adicionais ao usuário.

Resultado Final[editar | editar código-fonte]


Session State[editar | editar código-fonte]

O estado de sessão refere-se ao conjunto de dados que são mantidos durante a sessão do usuário. O Streamlit fornece uma maneira simples de acessar e modificar o estado de sessão usando o objeto st.session_state. Aqui está como você pode usá-lo:


Definindo Variáveis de Estado de Sessão[editar | editar código-fonte]

Você pode definir variáveis de estado de sessão inicializando-as dentro de uma condição que verifica se elas já foram definidas. Por exemplo:

if 'contador' not in st.session_state:
    st.session_state.contador = 0


Acessando Variáveis de Estado de Sessão[editar | editar código-fonte]

Você pode acessar as variáveis de estado de sessão em qualquer lugar do seu aplicativo usando a sintaxe st.session_state.nome_da_variavel.

st.write(f'O contador atual é: {st.session_state.contador}')

Atualizando Variáveis de Estado de Sessão[editar | editar código-fonte]

Você pode atualizar as variáveis de estado de sessão atribuindo-lhes novos valores.

st.session_state.contador += 1


Benefícios[editar | editar código-fonte]

  • Preservação de Dados: Os dados armazenados no estado da sessão permanecem acessíveis e inalterados entre diferentes interações do usuário.
  • Facilidade de Uso: A sintaxe simples e intuitiva do Streamlit torna fácil definir, acessar e modificar variáveis de estado de sessão.


Referências[editar | editar código-fonte]