import tkinter as tk
from tkinter import messagebox
def calcularImc(peso_str, altura_cm_str):
try:
peso = float(peso_str)
altura_cm = float(altura_cm_str)
if altura_cm <= 0:
return "Altura não pode ser zero ou negativa.", "Erro"
altura_m = altura_cm / 100.0 # Convert cm to meters for IMC calculation
imc = peso / (altura_m * altura_m)
imc = round(imc, 2)
if imc < 18.6:
classificacao = "abaixo do peso"
elif imc < 25:
classificacao = "peso normal"
elif imc < 30:
classificacao = "sobrepeso"
elif imc < 35:
classificacao = "obesidade grau 1"
elif imc < 40:
classificacao = "obesidade grau 2"
else:
classificacao = "obesidade grau 3(mórbida)"
return classificacao, imc
except ValueError:
return "Entrada inválida. Por favor, insira números válidos.", "Erro"
# The Tkinter GUI code below is commented out because it requires a graphical display
# which is not available in Google Colab notebooks. If you wish to run the GUI,
# please execute this code in a local Python environment with a display.
# janela = tk.Tk()
# janela.title("Calculadora de IMC")
# janela.geometry("500x500")
# # Rótulos e entradas
# tk.Label (janela, text="Nome:").pack(pady=5)
# # Note: entry_altura was defined twice in the original code, overwriting the first instance.
# entry_altura = tk.Entry (janela)
# entry_altura.pack()
# tk.Label (janela, text="Peso (kg):", font=("Arial", 10)).pack(pady=5)
# entry_peso = tk.Entry (janela)
# entry_peso.pack()
# tk.Label (janela, text="Altura (cm):").pack(pady=5)
# entry_altura = tk.Entry (janela)
# entry_altura.pack()
# botao = tk.Button(janela, text="calcular IMC", command=calcularImc)
# botao.pack(pady=15)
# resultado = tk.StringVar()
# resultado.set("Resultado")
# # Note: .pack was missing parentheses in the original code (tk.Label(...).pack)
# tk.Label(janela, textvariable=resultado).pack()
# janela.mainloop()
# --- Example of using the IMC calculation logic in Colab (without GUI) ---
if __name__ == "__main__":
print("--- Calculadora de IMC (versão sem GUI) ---")
# Test Case 1
test_peso_1 = "70" # kg
test_altura_cm_1 = "175" # cm
classificacao_1, imc_1 = calcularImc(test_peso_1, test_altura_cm_1)
print(f"\nPara Peso: {test_peso_1} kg, Altura: {test_altura_cm_1} cm")
print(f"IMC: {imc_1}")
print(f"Classificação: {classificacao_1}")
# Test Case 2
test_peso_2 = "90" # kg
test_altura_cm_2 = "180" # cm
classificacao_2, imc_2 = calcularImc(test_peso_2, test_altura_cm_2)
print(f"\nPara Peso: {test_peso_2} kg, Altura: {test_altura_cm_2} cm")
print(f"IMC: {imc_2}")
print(f"Classificação: {classificacao_2}")
# Test with invalid input
print("\n--- Teste de Entrada Inválida ---")
classificacao_invalid, imc_invalid = calcularImc("abc", "170")
print(f"Resultado: {classificacao_invalid}")
# Test with zero height
print("\n--- Teste de Altura Zero ---")
classificacao_zero_height, imc_zero_height = calcularImc("70", "0")
print(f"Resultado: {classificacao_zero_height}")