from tkinter import *
from tkinter import ttk, messagebox
root = Tk()
root.geometry("700x500")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calculadora de Gorjeta")
titulo = Label(text="Calculadora de Gorjeta",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.25, rely=0.05)
texto_sub1 = Label(text="Valor da Conta:",
font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.2, rely=0.25)
Valor_Conta = StringVar()
Valor_Conta_entrada = Entry(textvariable=Valor_Conta,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Valor_Conta_entrada.place(relx=0.55, rely=0.25, relwidth=0.35)
texto_sub2 = Label(text="Número de Pessoas:",
font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.13, rely=0.4)
Numero_Pessoas = StringVar()
Numero_Pessoas_entrada = Entry(textvariable=Numero_Pessoas,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Numero_Pessoas_entrada.place(relx=0.55, rely=0.4, relwidth=0.35)
texto_sub3 = Label(text="Percentagem da Gorjeta:",
font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.10, rely=0.55)
combo_gorjeta = ttk.Combobox(root, values=["5%", "10%", "15%", "20%", "25%"],
font=("Arial", "12", "bold"), justify='center')
combo_gorjeta.place(relx=0.55, rely=0.55, relwidth=0.35)
combo_gorjeta.current(2)
def calcular_gorjeta():
try:
conta = float(Valor_Conta.get())
pessoas = int(Numero_Pessoas.get())
gorjeta_percent = int(combo_gorjeta.get().replace("%", ""))
if conta <= 0 or pessoas <= 0:
raise ValueError("Os valores devem ser positivos!")
gorjeta = (gorjeta_percent / 100) * conta
total = conta + gorjeta
valor_por_pessoa = total / pessoas
resultado_gorjeta.config(text=f"Gorjeta: € {gorjeta:.2f}")
resultado_total.config(text=f"Total: € {total:.2f}")
resultado_por_pessoa.config(text=f"Por pessoa: € {valor_por_pessoa:.2f}")
except ValueError:
messagebox.showerror("Erro", "Por favor, insira valores válidos.")
def limpar():
Valor_Conta_entrada.delete(0, END)
Numero_Pessoas_entrada.delete(0, END)
resultado_gorjeta.config(text="")
resultado_total.config(text="")
resultado_por_pessoa.config(text="")
botao_calcular = Button(root, text="Calcular", font=("Arial", 16, "bold"),
bg="green", fg="white", command=calcular_gorjeta)
botao_calcular.place(relx=0.1, rely=0.65, relwidth=0.2, relheight=0.1)
but_limpar = Button(text="Limpar", bd=2, bg='orange', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.65, relwidth=0.2, relheight=0.1)
but_sair = Button(text="Sair", bd=2, bg='red', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.65, relwidth=0.2, relheight=0.1)
resultado_gorjeta = Label(text="", font=("Arial", 16, "bold"),
bg="#103030", fg="#49e3e3")
resultado_gorjeta.place(relx=0.3, rely=0.8)
resultado_total = Label(text="", font=("Arial", 16, "bold"),
bg="#103030", fg="#49e3e3")
resultado_total.place(relx=0.3, rely=0.85)
resultado_por_pessoa = Label(text="", font=("Arial", 16, "bold"),
bg="#103030", fg="#49e3e3")
resultado_por_pessoa.place(relx=0.3, rely=0.9)
root.mainloop()