from tkinter import *
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
root = Tk()
root.geometry("1000x650")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calcular a quantidade de água")
titulo = Label(text="Calcular a quantidade de água",
font=("Arial", "30", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.02)
texto_sub1 = Label(text="Idade:",
font=("Arial", "20", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.17)
Idade = StringVar()
Idade_entrada = Entry(textvariable=Idade,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Idade_entrada.place(relx=0.3, rely=0.18, relwidth=0.2)
texto_sub2 = Label(text="Peso (kg):",
font=("Arial", "20", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.05, rely=0.29)
Peso = StringVar()
Peso_entrada = Entry(textvariable=Peso,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Peso_entrada.place(relx=0.3, rely=0.30, relwidth=0.2)
texto_sub3 = Label(text="Ingerido (litros):",
font=("Arial", "20", "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.05, rely=0.41)
Ingerido = StringVar()
Ingerido_entrada = Entry(textvariable=Ingerido,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Ingerido_entrada.place(relx=0.3, rely=0.42, relwidth=0.2)
grafico_frame = Frame(root, bg="white", bd=2, relief=RIDGE)
grafico_frame.place(relx=0.55, rely=0.17, relwidth=0.4, relheight=0.4)
canvas_widget = None
def limpar():
Idade_entrada.delete(0, END)
Peso_entrada.delete(0, END)
Ingerido_entrada.delete(0, END)
resultado_texto.config(text="")
global canvas_widget
if canvas_widget:
canvas_widget.get_tk_widget().destroy()
canvas_widget = None
# Função calcular e desenhar gráfico
def app(event=None):
try:
idade = int(Idade.get())
peso = float(Peso.get())
ingerido = float(Ingerido.get())
if idade <= 17:
factor = 40
elif 18 <= idade <= 55:
factor = 35
elif 56 <= idade <= 65:
factor = 30
else:
factor = 25
agua_ml = peso * factor
agua_litros = agua_ml / 1000
if ingerido >= agua_litros:
status = "Parabéns! Você atingiu a ingestão recomendada."
else:
status = f"Você precisa ingerir mais {(agua_litros - ingerido):.2f} L."
mensagem = (
f"Ingestão diária recomendada: {agua_ml:.0f} ml ({agua_litros:.2f} L)\n"
f"Ingerido: {ingerido:.2f} L\n"
f"{status}"
)
resultado_texto.config(text=mensagem)
# GRÁFICO
global canvas_widget
if canvas_widget:
canvas_widget.get_tk_widget().destroy()
fig = Figure(figsize=(4.5, 3), dpi=100)
ax = fig.add_subplot(111)
ax.bar(["Recomendado", "Ingerido"], [agua_litros, ingerido],
color=["#49e3e3", "#107db2"])
ax.set_ylabel("Litros")
ax.set_title("Comparação da ingestão de água")
ax.axhline(2, color='green', linestyle='--', label="Meta ideal (2L)")
ax.legend()
canvas_widget = FigureCanvasTkAgg(fig, master=grafico_frame)
canvas_widget.draw()
canvas_widget.get_tk_widget().pack(fill=BOTH, expand=True)
except ValueError:
resultado_texto.config(text="Valor digitado inválido!")
# Botões (lado esquerdo)
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.05, rely=0.55, relwidth=0.25, relheight=0.08)
but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.05, rely=0.65, relwidth=0.25, relheight=0.08)
but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.05, rely=0.75, relwidth=0.25, relheight=0.08)
resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3", justify="left", anchor="nw")
resultado_texto.place(relx=0.05, rely=0.85, relwidth=0.9, relheight=0.1)
root.bind('<Return>', app)
root.mainloop()