from tkinter import *
# Configuração da janela
root = Tk()
root.geometry("400x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calcular IMT")
# Título
titulo = Label(text="Calcular IMT",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.17, rely=0.05)
# Entrada do valor do imóvel
texto_sub1 = Label(text="Valor do Imóvel (€):",
font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.3)
valor_imovel = StringVar()
valor_imovel_entrada = Entry(textvariable=valor_imovel,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
valor_imovel_entrada.place(relx=0.63, rely=0.31, relwidth=0.33)
# Limpar entrada e resultado
def limpar():
valor_imovel_entrada.delete(0, END)
resultado_texto.config(text="")
# Dropdown para finalidade
lista = ["Permanente", "Secundária"]
variable = StringVar(value=lista[0])
dropdown = OptionMenu(root, variable, *lista)
dropdown.config(font=("Arial", 15, "bold"), bg='#107db2', fg='white')
dropdown.place(relx=0.3, rely=0.4, relwidth=0.5)
# Função de cálculo
def app():
try:
valor = float(valor_imovel.get())
finalidade = variable.get().lower()
if finalidade == "permanente":
tabelas = [
(93331, 0, 0),
(127667, 0.02, 1866.62),
(174071, 0.05, 5708.21),
(290085, 0.07, 9087.22),
(float('inf'), 0.08, 0),
]
elif finalidade == "secundária":
tabelas = [
(93331, 0.01, 0),
(127667, 0.02, 1866.62),
(174071, 0.05, 5708.21),
(290085, 0.07, 9087.22),
(float('inf'), 0.08, 0),
]
else:
resultado_texto.config(text="Finalidade inválida.", fg="red")
return
# Calcular IMT
for limite, taxa, parcela in tabelas:
if valor <= limite:
imt = (valor * taxa) - parcela
imt = max(imt, 0) # Evitar valores negativos
resultado_texto.config(
text=f"O IMT devido é: € {imt:.2f}", fg="green")
return
except ValueError:
resultado_texto.config(text="Erro: Digite um valor válido!", fg="red")
# Botões
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.65, 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.65, 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.65, relwidth=0.25, relheight=0.1)
# Resultado
resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15)
# Iniciar aplicação
root.mainloop()