Mundo em Python

Progresso de Objetivo

from tkinter import *
from tkinter import ttk root = Tk()
root.geometry("700x420")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Progresso de Objetivo")
Label(
root,
text="Progresso de Objetivo",
font=("Arial", 28, "bold"),
bg="#103030",
fg="#49e3e3"
).place(relx=0.18, rely=0.05)
Label(root, text="Meta (€):",
font=("Arial", 18, "bold"),
bg="#103030", fg="#49e3e3"
).place(relx=0.25, rely=0.25) Label(root, text="Valor Atual (€):",
font=("Arial", 18, "bold"),
bg="#103030", fg="#49e3e3"
).place(relx=0.18, rely=0.45) meta = StringVar()
atual = StringVar() Entry(root, textvariable=meta,
font=("Arial", 12, "bold"),
justify="center"
).place(relx=0.5, rely=0.27, relwidth=0.35) Entry(root, textvariable=atual,
font=("Arial", 12, "bold"),
justify="center"
).place(relx=0.5, rely=0.47, relwidth=0.35)
barra = ttk.Progressbar(
root,
orient="horizontal",
length=400,
mode="determinate"
)
barra.place(relx=0.15, rely=0.7)
resultado = Label(
root,
text="",
font=("Arial", 12, "bold"),
bg="#cfe2f3"
)
resultado.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.12) def calcular():
try:
m = float(meta.get())
a = float(atual.get())
percentagem = (a / m) * 100
barra['value'] = min(percentagem, 100)
if percentagem == 100:
mensagem = f"Objetivo concluído! ({percentagem:.2f}%)"
elif percentagem>100:
p = percentagem-100

mensagem = f"Objetivo ultrapassado!\n" \
f" Ultrapassou: ({p:.2f}%)"

else:
falta = m - a
mensagem = (
f"Progresso: {percentagem:.2f}%\n"
f"Faltam {falta:.2f} €"
) resultado.config(text=mensagem) except:
resultado.config(text="Valores inválidos!")
def limpar():
meta.set("")
atual.set("")
barra['value'] = 0
resultado.config(text="") Button(root, text="Mostrar",
command=calcular,
bg="#107db2", fg="white",
font=('verdana', 12, 'bold')
).place(relx=0.15, rely=0.55, relwidth=0.25) Button(root, text="Limpar",
command=limpar,
bg="#107db2", fg="white",
font=('verdana', 12, 'bold')
).place(relx=0.45, rely=0.55, relwidth=0.25) Button(root, text="Sair",
command=root.destroy,
bg="#107db2", fg="white",
font=('verdana', 12, 'bold')
).place(relx=0.75, rely=0.55, relwidth=0.2) root.mainloop()
0