Mundo em Python

Calcular Calorias de Manutenção

from tkinter import *

# Configuração inicial da janela
root = Tk()
root.geometry("700x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calcular Calorias de Manutenção") # Título
titulo = Label(text="Calcular Calorias de Manutenção",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.1, rely=0.05) # Labels e Entradas
texto_sub1 = Label(text="Peso (em kg):",
font=("Arial", "20", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.21, rely=0.20) texto_sub2 = Label(text="Altura (em cm):",
font=("Arial", "20", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.2, rely=0.33) texto_sub3 = Label(text="Idade (em anos):",
font=("Arial", "20", "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.2, rely=0.45) # Entrada de peso
Peso = StringVar()
Peso_entrada = Entry(textvariable=Peso,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Peso_entrada.place(relx=0.55, rely=0.21, relwidth=0.35)
Peso_entrada.focus() # Entrada de altura
Altura = StringVar()
Altura_entrada = Entry(textvariable=Altura,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Altura_entrada.place(relx=0.55, rely=0.34, relwidth=0.35) # Entrada de idade
idade = StringVar()
idade_entrada = Entry(textvariable=idade,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
idade_entrada.place(relx=0.55, rely=0.46, relwidth=0.35) # Dropdown para gênero
var1 = StringVar()
dropDownList1 = ["Masculino", "Feminino"]
dropdown1 = OptionMenu(root, var1, *dropDownList1)
var1.set(dropDownList1[0])
dropdown1.place(relx=0.05, rely=0.6)
dropdown1.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "15", "bold"))
dropdown1["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "15", "bold")) # Dropdown para nível de atividade física
var2 = StringVar()
dropDownList2 = [
"1. Sedentário (pouco ou nenhum exercício)",
"2. Levemente activo (exercício leve 1-3 dias/semana)",
"3. Moderadamente activo (exercício moderado 3-5 dias/semana)",
"4. Muito activo (exercício intenso 6-7 dias/semana)",
"5. Extremamente activo (trabalho físico pesado\n ou treino 2x/dia)"
]
dropdown2 = OptionMenu(root, var2, *dropDownList2)
var2.set(dropDownList2[0])
dropdown2.place(relx=0.3, rely=0.55)
dropdown2.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "15", "bold"))
dropdown2["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "15", "bold")) # Função para calcular calorias
def calcular():
try:
# Obter os valores de entrada
peso = float(Peso_entrada.get())
altura = float(Altura_entrada.get())
idade_valor = int(idade_entrada.get())
genero = var1.get()
atividade = var2.get() # Fórmula de Mifflin-St Jeor
if genero == "Masculino":
bmr = 10 * peso + 6.25 * altura - 5 * idade_valor + 5
else:
bmr = 10 * peso + 6.25 * altura - 5 * idade_valor - 161

# Fator de atividade
fatores_atividade = {
"1. Sedentário (pouco ou nenhum exercício)": 1.2,
"2. Levemente activo (exercício leve 1-3 dias/semana)": 1.375,
"3. Moderadamente activo (exercício moderado 3-5 dias/semana)": 1.55,
"4. Muito activo (exercício intenso 6-7 dias/semana)": 1.725,
"5. Extremamente activo (trabalho físico pesado\n ou treino 2x/dia)": 1.9
} fator_atividade = fatores_atividade.get(atividade, 1.2) # Padrão é 1.2

# Calorias de manutenção
calorias_manutencao = bmr * fator_atividade # Exibir o resultado
resultado_texto.config(
text=f"Calorias de Manutenção: {calorias_manutencao:.2f} calorias/dia"
)
except ValueError:
resultado_texto.config(text="Erro: Insira valores válidos para todos os campos.") # Função para limpar os campos
def limpar():
Peso_entrada.delete(0, END)
Altura_entrada.delete(0, END)
idade_entrada.delete(0, END)
resultado_texto.config(text="") # Botões
but_calcular = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=calcular)
but_calcular.place(relx=0.1, rely=0.7, relwidth=0.25, relheight=0.1) but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.7, relwidth=0.25, relheight=0.1) but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.7, relwidth=0.25, relheight=0.1) # Exibição do resultado
resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.85, relwidth=0.9, relheight=0.1) # Loop principal da interface
root.mainloop()

 

0