Este é um projeto Python para iniciantes, e aqui vamos construir uma calculadora para calcular o Índice de Massa Corporal.

Índice de Massa Corporal é um cálculo simples usando a altura e o peso de uma pessoa.

Rastrear seu IMC é uma maneira útil de verificar se você está mantendo um peso saudável. É calculado usando o peso e a altura de uma pessoa, usando esta fórmula: peso / altura²

O número resultante indica uma das seguintes categorias:

Abaixo do peso = menos de 18,5

Normal = maior ou igual a 18,5 e menor que 25

Sobrepeso = maior ou igual a 25 e menor que 30

Obesidade = 30 ou mais

O programa levará o peso e a altura de uma pessoa como entrada e gera a categoria de IMC correspondente.


Este projeto não requer muita complexidade, mas é ótimo para praticar Python, pois você aprenderá mais técnicas que pode usar em seus projetos Python futuros.

Aqui usaremos o Tkinter para os gráficos, e é necessário que você tenha conhecimentos básicos de Python. Em seguida, iniciaremos nosso projeto, primeiro criaremos um novo arquivo Python e importaremos as bibliotecas essenciais para ele.

 

from tkinter import *
from tkinter import ttk

 

Em seguida, crie uma nova janela do tkinter e faça algumas configurações básicas nela.

################# cores ###############
 
co0 = "#444466"  # Preta
co1 = "#feffff"  # branca
co2 = "#4065a1"  # vermelha
 
janela = Tk()
janela.title('')
janela.geometry('295x230')
janela.configure(bg=co1)
 
janela.mainloop()
 

 

Agora divida esta janela em duas partes, uma acima e outra abaixo, faça isso usando o quadro.

################# Frames ####################
frame_cima = Frame(janela, width=295, height=50,bg=co1, pady=0, padx=0, relief="flat",)
frame_cima.grid(row=0, column=0, sticky=NSEW)
 
frame_baixo = Frame(janela, width=295, height=200,bg=co1, pady=0, padx=0, relief="flat",)
frame_baixo.grid(row=1, column=0, sticky=NSEW)
 
style = ttk.Style(janela)
style.theme_use("clam")


Ok, agora crie alguns Labels no Frame cima, este Labelo irá demonstrar o nome do nosso aplicativo.

# ---------------- Configuracoes do Frame cima ---------------------
 
app_nome = Label(frame_cima, text="Calculadora de IMC", width=23, height=1, padx=0, relief="flat", anchor="center", font=('Ivy 16 bold'), bg=co1, fg=co0)
app_nome.place(x=0, y=2)
 
app_linha = Label(frame_cima, text="", width=400, height=1, padx=0, relief="flat", anchor="nw", font=('Arial 1'), bg=co2, fg=co1)
app_linha.place(x=0, y=35)


Ok, vamos criar alguns Frame e entradas no Frame baixo, e também um botão que será usado para calcular.

# ---------------- Configuracoes do Frame_baixo ---------------------
 
l_peso = Label(frame_baixo , text="Insira seu peso", height=1, padx=0, relief="flat", anchor="center", font=('Ivy 10 bold'), bg=co1, fg=co0)
l_peso.grid(row=0, column=0, columnspan=1,  sticky=NW, pady=10, padx=3)
e_peso = Entry(frame_baixo, width=5, font=('Ivy 10 bold'),justify='center',relief=SOLID)
e_peso.grid(row=0, column=1, columnspan=1,  sticky=NSEW, pady=10, padx=3)
 
l_altura = Label(frame_baixo , text="Insira sua altura", height=1, padx=0, relief="flat", anchor="center", font=('Ivy 10 bold'), bg=co1, fg=co0)
l_altura.grid(row=1, column=0, columnspan=1,  sticky=NW, pady=10, padx=3)
e_altura = Entry(frame_baixo, width=5, font=('Ivy 10 bold'),justify='center',relief=SOLID)
e_altura.grid(row=1, column=1, columnspan=1,  sticky=NSEW, pady=10, padx=3)
 
 
l_resultado = Label(frame_baixo ,width=5, text="---", height=1, padx=6, pady=12, relief="flat", anchor="center", font=('Ivy 24 bold'), bg=co2, fg=co1)
l_resultado.place(x=175, y=10)
 
l_resultado_texto = Label(frame_baixo , width=37, text="", height=1, padx=0, pady=12, relief="flat", anchor="center", font=('Ivy 10 bold'), bg=co1, fg=co0)
l_resultado_texto.place(x=0, y=85)
 
 
# ------------ Botao calcular ------------------
 
b_calcular = Button(frame_baixo, text="Calcular",width=34, height=1, overrelief=SOLID,  bg=co2, fg="white", font=('Ivy 10 bold'), anchor="center", relief=RAISED )
b_gerar_senha.grid(row=4, column=0,  sticky=NSEW, pady=60, padx=5, columnspan=30)


 
Ok, agora que terminamos de projetar nosso aplicativo, vamos criar uma função que conterá a parte lógica de nosso aplicativo, então assim será.
 

def calcular():
    peso = float(e_peso.get())
    altura = float(e_altura.get())**2
    resultado = peso/altura
    
    if resultado < 18.6:
        l_resultado_texto['text'] = "Seu IMC é: Abaixo do peso"
    elif resultado >= 18.5 and resultado < 24.9:
        l_resultado_texto['text'] = "Seu IMC é: Normal"
    elif resultado >=25 and resultado < 29.9:
        l_resultado_texto['text'] ="Seu IMC é: Sobrepeso"
    else:
        l_resultado_texto['text'] = "Seu IMC é: Obesidade"
        
    l_resultado['text'] = "{:.{}f}".format( resultado, 2 )


Agora vamos conectar essa função com o botão calcular, que será:

b_calcular = Button(frame_baixo,command=calcular, text="Calcular",width=34, height=1, overrelief=SOLID,  bg=co2, fg="white", font=('Ivy 10 bold'), anchor="center", relief=RAISED )
b_calcular.grid(row=4, column=0,  sticky=NSEW, pady=60, padx=5, columnspan=30)


Assim que finalizamos nosso aplicativo, agora tente modificá-lo como quiser e também tente adicionar novos recursos a ele.

Qualquer dúvida, deixe nos comentários vou ajudar