import tkinter as tk
from tkinter import messagebox
import matplotlib
matplotlib.use("TkAgg") # Essencial para o Matplotlib funcionar corretamente com o Tkinter
import matplotlib.pyplot as plt
# Função para calcular o IMC dado o peso e a altura
def calcular_imc(peso, altura):
return peso / (altura ** 2)
# Função para classificar o IMC e fornecer recomendações
def classificar_imc(imc):
if imc < 18.5:
return "Abaixo do peso", "Aumente a ingestão calórica com alimentos saudáveis."
elif 18.5 <= imc < 24.9:
return "Peso normal", "Mantenha uma dieta equilibrada e continue se exercitando."
elif 25 <= imc < 29.9:
return "Sobrepeso", "Adote uma dieta balanceada e aumente a atividade física."
elif 30 <= imc < 34.9:
return "Obesidade grau I", "Consulte um nutricionista e inicie um programa de exercícios."
elif 35 <= imc < 39.9:
return "Obesidade grau II", "Procure ajuda médica para um plano de perda de peso."
else:
return "Obesidade grau III", "Intervenção médica urgente é necessária."
# Função para alertar sobre os perigos relacionados ao IMC
def alertar_sobre_perigos(imc):
if imc < 18.5:
return "Perigo: Pode causar deficiências nutricionais, osteoporose e problemas
imunológicos."
elif 25 <= imc < 29.9:
return "Perigo: Pode levar a doenças cardíacas, diabetes tipo 2 e hipertensão."
elif 30 <= imc < 34.9:
return "Perigo: Aumenta o risco de doenças cardíacas, diabetes tipo 2 e outras condições."
elif 35 <= imc < 39.9:
return "Perigo: Alto risco de doenças graves, como doenças cardíacas, diabetes e
hipertensão."
else:
return "Perigo: Muito alto risco de doenças graves e complicações de saúde."
# Função para plotar um gráfico de barras com a classificação do IMC
def plotar_grafico(imc):
categorias = ["Abaixo do peso", "Peso normal", "Sobrepeso", "Obesidade grau I", "Obesidade
grau II",
"Obesidade grau III"]
valores = [18.5, 24.9, 29.9, 34.9, 39.9, 50]
plt.figure(figsize=(10, 6))
plt.bar(categorias, valores, color=["blue", "green", "yellow", "orange", "red", "darkred"])
plt.axhline(y=imc, color='black', linestyle='--', label=f'Seu IMC: {imc:.2f}')
plt.xlabel("Categorias de IMC")
plt.ylabel("Valores de IMC")
plt.title("Classificação de IMC")
plt.legend()
plt.show()
# Função para calcular o IMC e exibir resultados e gráficos
def calcular():
try:
peso = float(entry_peso.get()) # Obter o peso do input do usuário
altura = float(entry_altura.get()) # Obter a altura do input do usuário
imc = calcular_imc(peso, altura) # Calcular o IMC
classificacao, recomendacao = classificar_imc(imc) # Classificar o IMC e obter
recomendações
perigo = alertar_sobre_perigos(imc) # Obter alertas sobre perigos
# Exibir resultados em uma caixa de mensagem
resultado = f"Seu IMC é: {imc:.2f}\nClassificação: {classificacao}\nRecomendação:
{recomendacao}\nPerigo relacionado: {perigo}"
messagebox.showinfo("Resultado do IMC", resultado)
# Plotar o gráfico de barras com a classificação do IMC
plotar_grafico(imc)
except ValueError:
messagebox.showerror("Erro de entrada", "Por favor, insira valores válidos para peso e
altura.")
# Criar a interface gráfica com tkinter
root = tk.Tk()
root.title("Calculadora de IMC")
# Criar labels e campos de entrada para peso e altura
tk.Label(root, text="Peso (kg):").grid(row=0, column=0, padx=10, pady=10)
entry_peso = tk.Entry(root)
entry_peso.grid(row=0, column=1, padx=10, pady=10)
tk.Label(root, text="Altura (m):").grid(row=1, column=0, padx=10, pady=10)
entry_altura = tk.Entry(root)
entry_altura.grid(row=1, column=1, padx=10, pady=10)
# Criar botão para calcular o IMC
btn_calcular = tk.Button(root, text="Calcular IMC", command=calcular)
btn_calcular.grid(row=2, column=0, columnspan=2, pady=20)
# Iniciar o loop principal da interface gráfica
root.mainloop()