from tkinter import *
# Configurações iniciais da janela
root = Tk()
root.geometry("500x500")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Simulação de MB Way")
# Título do aplicativo
titulo = Label(text="Simulação de MB Way",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05)
# Entrada de valor médio da transferência
texto_sub1 = Label(text="Valor médio da transferência (euros):",
font=("Arial", "12", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.25)
valor_transferencia = StringVar()
valor_transferencia_entrada = Entry(textvariable=valor_transferencia,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
valor_transferencia_entrada.place(relx=0.64, rely=0.26, relwidth=0.28)
# Entrada de número de transferências realizadas
texto_sub2 = Label(text="Número de transferências realizadas:",
font=("Arial", "12", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.05, rely=0.35)
transferencias_realizadas = StringVar()
transferencias_realizadas_entrada = Entry(textvariable=transferencias_realizadas,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
transferencias_realizadas_entrada.place(relx=0.64, rely=0.36, relwidth=0.28)
# Seleção do tipo de cartão
texto_sub3 = Label(text="Tipo de cartão:",
font=("Arial", "15", "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.05, rely=0.45)
tipo_cartao = StringVar(value="débito")
radio_debito = Radiobutton(text="Cartão de Débito (0,2%)", variable=tipo_cartao, value="débito",
bg="#103030", fg="#49e3e3", font=("Arial", "12", "bold"), selectcolor="#107db2")
radio_credito = Radiobutton(text="Cartão de Crédito (0,3%)", variable=tipo_cartao, value="crédito",
bg="#103030", fg="#49e3e3", font=("Arial", "12", "bold"), selectcolor="#107db2")
radio_debito.place(relx=0.4, rely=0.45)
radio_credito.place(relx=0.4, rely=0.5)
# Função para limpar a entrada e o resultado
def limpar():
valor_transferencia_entrada.delete(0, END)
transferencias_realizadas_entrada.delete(0, END)
resultado_texto.config(text="")
# Função para calcular as comissões
def app():
try:
valor_medio_transferencia = float(valor_transferencia.get())
numero_transferencias_realizadas = int(transferencias_realizadas.get())
tipo = tipo_cartao.get()
limite_transferencias_gratis = 10
if tipo == "débito":
comissao_por_transferencia = 0.002 # 0,2%
elif tipo == "crédito":
comissao_por_transferencia = 0.003 # 0,3%
if numero_transferencias_realizadas <= limite_transferencias_gratis:
comissao_total = 0
transferencias_pagas = 0
else:
transferencias_pagas = numero_transferencias_realizadas - limite_transferencias_gratis
comissao_total = transferencias_pagas * valor_medio_transferencia * comissao_por_transferencia
# Exibe o resultado
mensagem = (f"Resumo das Comissões:\n"
f"Valor médio da transferência: {valor_medio_transferencia:.2f} euros\n"
f"Número de transferências realizadas: {numero_transferencias_realizadas}\n"
f"Transferências gratuitas: {limite_transferencias_gratis}\n"
f"Transferências pagas: {transferencias_pagas}\n"
f"Comissão total: {comissao_total:.2f} euros")
resultado_texto.config(text=mensagem)
except ValueError:
resultado_texto.config(text="Digitação de valor inválido!")
# Botões de ação
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.55, 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.55, 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.55, relwidth=0.25, relheight=0.1)
# Área de texto para mostrar os resultados
resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.68, relwidth=0.9, relheight=0.27)
# Inicia a aplicação
root.mainloop()