from tkinter import *
# Configuração inicial da janela
root = Tk()
root.geometry("500x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Portal 65")
# Definição do valor do IAS
IAS = 480.43
# Título da janela
titulo = Label(text="Portal 65",
font=("Arial", "35", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.25, rely=0.05)
# Campo para o rendimento bruto anual
texto_sub1 = Label(text="Rendimento bruto anual do agregado familiar",
font=("Arial", "15", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.08, rely=0.2)
bruto_anual = StringVar()
bruto_anual_entrada = Entry(textvariable=bruto_anual,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
bruto_anual_entrada.place(relx=0.32, rely=0.28, relwidth=0.35)
# Campo para o valor da renda mensal
texto_sub2 = Label(text="Valor da Renda mensal",
font=("Arial", "15", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.18, rely=0.34)
renda = StringVar()
renda_entrada = Entry(textvariable=renda,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
renda_entrada.place(relx=0.32, rely=0.4, relwidth=0.35)
# Campo para o número de pessoas no agregado familiar
texto_sub3 = Label(text="Número de pessoas no agregado familiar",
font=("Arial", "15", "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.1, rely=0.45)
Número_pessoas = StringVar()
Número_pessoas_entrada = Entry(textvariable=Número_pessoas,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Número_pessoas_entrada.place(relx=0.32, rely=0.5, relwidth=0.35)
# Campo para a zona da habitação
texto_sub4 = Label(text="Zona da habitação (A, B, C, ou Outra)",
font=("Arial", "15", "bold"), bg="#103030", fg="#49e3e3")
texto_sub4.place(relx=0.1, rely=0.55)
opções1 = ["A", "B", "C", "Outra"]
selected_opções1 = StringVar()
selected_opções1.set(opções1[0])
option_menu_opções1 = OptionMenu(root, selected_opções1, *opções1)
option_menu_opções1.place(relx=0.32, rely=0.6, relwidth=0.35)
# Função para limpar os campos de entrada
def limpar():
Número_pessoas_entrada.delete(0, END)
renda_entrada.delete(0, END)
bruto_anual_entrada.delete(0, END)
resultado_texto.config(text="")
# Função principal para calcular o apoio
def app():
try:
n_pessoas = int(Número_pessoas.get())
valor_renda = float(renda.get())
valor_rendimento = float(bruto_anual.get())
zona = selected_opções1.get()
# Calcular o rendimento mensal por pessoa
rendimento_mensal_por_pessoa = valor_rendimento / 12 / n_pessoas
# Verificar elegibilidade
if rendimento_mensal_por_pessoa > 4 * IAS:
resultado_texto.config(text="Não tem direito ao apoio.")
else:
# Calcular a percentagem de apoio baseada na zona
if zona == "A":
percentagem_apoio = 0.50 # 50% em zonas de maior pressão imobiliária
elif zona == "B":
percentagem_apoio = 0.40 # 40% em zonas de pressão média
elif zona == "C":
percentagem_apoio = 0.30 # 30% em zonas de menor pressão
else:
percentagem_apoio = 0.20 # 20% em outras zonas
apoio = valor_renda * percentagem_apoio
resultado_texto.config(text=f"Você é elegível!\n Subsídio estimado: €{apoio:.2f} por mês.")
except ValueError:
resultado_texto.config(text="Valor digitado inválido!")
# Botões para calcular, limpar e sair
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.7, relwidth=0.25, relheight=0.05)
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.7, relwidth=0.25, relheight=0.05)
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.7, relwidth=0.25, relheight=0.05)
# Label para exibir o 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 a interface gráfica
root.mainloop()