Este é um projeto Python para iniciantes, e aqui vamos construir uma calculadora para calcular o Índice de Massa Corporal.
O Í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
2 Comentários
Olá João!
ResponderEliminarCopiei exatamente o seu código mas está dando esse erro: can't invoke "frame" command: application has been destroyed
O que posso estar fazendo errado?
Olá, acho que é porque o widget foi destruído e você está chamando algo que não está mais lá.
Eliminartenta comentar a partir do video da Youtube, la eu poderei ver a mensagem e responder a tempo