import tkinter as tk
from tkinter import messagebox
class CalculadoraIMC:
def __init__(self, peso: str, altura: str):
self.peso = self.valida_entrada(peso, "peso")
self.altura = self.valida_entrada(altura, "altura")
self.imc = self.calcula_imc()
def valida_entrada(self, entrada: str, nome: str) -> str:
try:
if entrada[0] == '-':
return f"Erro: O valor de {nome} não pode ser negativo."
exit()
return float(entrada)
except ValueError:
return f"Erro: Insira um valor válido para {nome}."
exit()
def calcula_imc(self) -> float:
return self.peso / (self.altura ** 2)
def valida_imc(self) -> str:
if self.imc < 18.5:
return f"Abaixo do peso IMC é {self.imc:.2f}"
elif 18.5 <= self.imc < 25:
return f"Peso normal IMC é {self.imc:.2f}"
else:
return f"Acima do peso IMC é {self.imc:.2f}"
janela = tk.Tk()
janela.title("Calculadora de IMC")
janela.geometry("300x300")
tk.Label(janela, text="Digite seu peso (kg):").pack(pady=5)
entry_peso = tk.Entry(janela)
entry_peso.pack(pady=5)
tk.Label(janela, text="Digite sua altura (m):").pack(pady=5)
entry_altura = tk.Entry(janela)
entry_altura.pack(pady=5)
def calcular():
peso = entry_peso.get()
altura = entry_altura.get()
imc_obj = CalculadoraIMC(peso, altura)
tk.Label(janela, text=f"{imc_obj.valida_imc()}").pack(pady=5)
btn_calcular = tk.Button(janela, text="Calcular IMC", command=lambda: calcular())
btn_calcular.pack(pady=20)
janela.mainloop()