from tkinter import *
import re
import webbrowser
presidentes_assembleia = [
{"nome": "Henrique de Barros", "partido": "PS", "legislaturas": "Assembleia Constituinte (1975–1976)",
"nascimento": 1904, "wikipedia_url": "https://pt.wikipedia.org/wiki/Henrique_de_Barros"},
{"nome": "Vasco da Gama Fernandes", "partido": "PS", "legislaturas": "I Legislatura (1976–1978)",
"nascimento": 1908, "wikipedia_url": "https://pt.wikipedia.org/wiki/Vasco_da_Gama_Fernandes"},
{"nome": "Teófilo Carvalho dos Santos", "partido": "PS", "legislaturas": "II Legislatura (1978–1980)",
"nascimento": 1906, "wikipedia_url": "https://pt.wikipedia.org/wiki/Te%C3%B3filo_Carvalho_dos_Santos"},
{"nome": "Leonardo Ribeiro de Almeida", "partido": "CDS",
"legislaturas": "III e V Legislaturas (1980–1981, 1982–1983)", "nascimento": 1924,
"wikipedia_url": "https://pt.wikipedia.org/wiki/Leonardo_Ribeiro_de_Almeida"},
{"nome": "Francisco de Oliveira Dias", "partido": "PPD/PSD", "legislaturas": "IV Legislatura (1981–1982)",
"nascimento": 1930, "wikipedia_url": "https://pt.wikipedia.org/wiki/Francisco_de_Oliveira_Dias"},
{"nome": "Tito de Morais", "partido": "PS", "legislaturas": "VI Legislatura (1983–1984)", "nascimento": 1910,
"wikipedia_url": "https://pt.wikipedia.org/wiki/Manuel_Alfredo_Tito_de_Morais"},
{"nome": "Fernando Amaral", "partido": "PPD/PSD", "legislaturas": "VII Legislatura (1984–1987)", "nascimento": 1925,
"wikipedia_url": "https://pt.wikipedia.org/wiki/Fernando_do_Amaral"},
{"nome": "Vítor Crespo", "partido": "PPD/PSD", "legislaturas": "VIII Legislatura (1987–1991)", "nascimento": 1932,
"wikipedia_url": "https://pt.wikipedia.org/wiki/V%C3%ADtor_Crespo"},
{"nome": "António Barbosa de Melo", "partido": "PPD/PSD", "legislaturas": "IX Legislatura (1991–1995)",
"nascimento": 1932, "wikipedia_url": "https://pt.wikipedia.org/wiki/Ant%C3%B3nio_Barbosa_de_Melo"},
{"nome": "António de Almeida Santos", "partido": "PS", "legislaturas": "X e XI Legislaturas (1995–2002)",
"nascimento": 1926, "wikipedia_url": "https://pt.wikipedia.org/wiki/Ant%C3%B3nio_de_Almeida_Santos"},
{"nome": "João Bosco Mota Amaral", "partido": "PPD/PSD", "legislaturas": "XII Legislatura (2002–2005)",
"nascimento": 1943, "wikipedia_url": "https://pt.wikipedia.org/wiki/Jo%C3%A3o_Bosco_Mota_Amaral"},
{"nome": "Jaime Gama", "partido": "PS", "legislaturas": "XIII e XIV Legislaturas (2005–2011)", "nascimento": 1947,
"wikipedia_url": "https://pt.wikipedia.org/wiki/Jaime_Gama"},
{"nome": "Maria da Assunção Esteves", "partido": "PPD/PSD", "legislaturas": "XV Legislatura (2011–2015)",
"nascimento": 1956, "wikipedia_url": "https://pt.wikipedia.org/wiki/Assun%C3%A7%C3%A3o_Esteves"},
{"nome": "Eduardo Ferro Rodrigues", "partido": "PS", "legislaturas": "XVI e XVII Legislaturas (2015–2022)",
"nascimento": 1949, "wikipedia_url": "https://pt.wikipedia.org/wiki/Eduardo_Ferro_Rodrigues"},
{"nome": "Augusto Santos Silva", "partido": "PS", "legislaturas": "XVIII Legislatura (2022–2024)",
"nascimento": 1956, "wikipedia_url": "https://pt.wikipedia.org/wiki/Augusto_Santos_Silva"},
{"nome": "José Pedro Aguiar-Branco", "partido": "PPD/PSD", "legislaturas": "XIX Legislatura (2024–presente)",
"nascimento": 1957, "wikipedia_url": "https://pt.wikipedia.org/wiki/Jos%C3%A9_Pedro_Aguiar-Branco"},
]
partido_cores = {
"PS": "#FF69B4",
"PPD/PSD": "#ff8f00",
"CDS": "#1565c0",
}
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Lista de Presidentes da Assembleia da República")
titulo = Label(root, text="Lista de Presidentes da Assembleia da República",
font=("Arial", "20", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05)
texto_sub1 = Label(root, text="Escolha do nome :", font=("Arial", "18", "bold"),
bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.25)
president_names = [p['nome'] for p in presidentes_assembleia]
var = StringVar()
var.set(president_names[0])
details_label = Label(root, text="", font=("Arial", 14), bg="#103030", fg="#FFFFFF", justify=LEFT)
details_label.place(relx=0.05, rely=0.45)
wikipedia_link_label = Label(root, text="", font=("Arial", 12, "underline"),
fg="blue", bg="#103030", cursor="hand2")
wikipedia_link_label.place(relx=0.05, rely=0.75)
def open_wikipedia_link(event):
"""Abre o link da Wikipedia armazenado como atributo do rótulo."""
url = getattr(wikipedia_link_label, "url", None)
if url and url.startswith("http"):
webbrowser.open_new(url)
wikipedia_link_label.bind("<Button-1>", open_wikipedia_link)
def update_details(*args):
selected_name = var.get()
for president in presidentes_assembleia:
if president['nome'] == selected_name:
details_text = f"Partido: {president['partido']}\nLegislaturas: {president['legislaturas']}"
legislaturas_str = president['legislaturas']
first_year_match = re.search(r'(\d{4})', legislaturas_str)
if president.get('nascimento') and first_year_match:
birth_year = president['nascimento']
first_start_year = int(first_year_match.group(1))
age = first_start_year - birth_year
details_text += f"\nIdade ao assumir (primeira legislatura): {age} anos ({first_start_year})"
details_label.config(text=details_text)
if president.get('wikipedia_url'):
wikipedia_link_label.config(text="Abrir na Wikipedia")
wikipedia_link_label.url = president['wikipedia_url']
else:
wikipedia_link_label.config(text="")
wikipedia_link_label.url = None
cor_partido = partido_cores.get(president['partido'], "#103030")
root.config(bg=cor_partido)
titulo.config(bg=cor_partido)
texto_sub1.config(bg=cor_partido)
details_label.config(bg=cor_partido)
wikipedia_link_label.config(bg=cor_partido)
break
dropdown = OptionMenu(root, var, *president_names, command=update_details)
dropdown.place(relx=0.4, rely=0.25, relwidth=0.45)
dropdown.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "15", "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "15", "bold"))
update_details()
root.mainloop()