Streamlit
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.
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!')
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.