Mundo em Python

Secretário-Geral do Partido Socialista

from tkinter import *

ps_secretarios_gerais = [
{
"nome": "Mário Soares",
"periodo": "1973–1986",
"observacoes": "Fundador do PS. Foi o primeiro Secretário-Geral, liderando o partido desde a fundação até ser eleito Presidente da República em 1986."
},
{
"nome": "Vítor Constâncio",
"periodo": "1986–1989",
"observacoes": "Sucedeu a Mário Soares. Mais tarde, foi Governador do Banco de Portugal e Vice-Presidente do Banco Central Europeu (BCE)."
},
{
"nome": "Jorge Sampaio",
"periodo": "1989–1992",
"observacoes": "Elegeu-se líder no Congresso da Cova da Beira. Tornou-se Presidente da República de Portugal em 1996."
},
{
"nome": "António Guterres",
"periodo": "1992–2002",
"observacoes": "Conduziu o partido à vitória e foi Primeiro-Ministro de 1995 a 2002. Atualmente, é Secretário-Geral das Nações Unidas."
},
{
"nome": "Eduardo Ferro Rodrigues",
"periodo": "2002–2004",
"observacoes": "Assumiu a liderança após a demissão de Guterres, renunciando ao cargo depois do resultado das eleições europeias de 2004."
},
{
"nome": "José Sócrates",
"periodo": "2004–2011",
"observacoes": "Liderou o PS de volta ao poder, sendo Primeiro-Ministro de 2005 a 2011. Demitiu-se após o chumbo do PEC IV e o pedido de resgate financeiro."
},
{
"nome": "António José Seguro",
"periodo": "2011–2014",
"observacoes": "Liderou o PS na oposição ao Governo PSD/CDS-PP. Foi afastado da liderança por António Costa através de eleições primárias."
},
{
"nome": "António Costa",
"periodo": "2014–2024",
"observacoes": "Foi Primeiro-Ministro (2015-2024), liderando os governos da 'Geringonça' e da maioria absoluta. Demitiu-se em novembro de 2023."
},
{
"nome": "Pedro Nuno Santos",
"periodo": "2024–2025",
"observacoes": "Eleito após a saída de Costa, liderou o PS nas eleições antecipadas de 2024. Renunciou ao cargo após a derrota eleitoral em maio de 2025."
},
{
"nome": "José Luís Carneiro",
"periodo": "2025–Presente",
"observacoes": "Atual Secretário-Geral do PS, eleito para suceder a Pedro Nuno Santos em maio de 2025."
}
] # Lista de ordinais
ordinais = ["Primeiro", "Segundo", "Terceiro", "Quarto", "Quinto", "Sexto", "Sétimo", "Oitavo","Nono","Décimo"] # Função para exibir informações
def mostrar_info():
escolhido = var.get()
resultado_texto.config(state=NORMAL)
resultado_texto.delete("1.0", END)
for i, item in enumerate(ps_secretarios_gerais):
if escolhido in item["nome"]:
ordinal = ordinais[i] if i < len(ordinais) else f"{i+1}º"
resultado_texto.insert(END, f"{ordinal} Secretário-geral: {item['nome']}\n")
resultado_texto.insert(END, f"Período: {item['periodo']}\n")
resultado_texto.insert(END, f"Observações: {item['observacoes']}\n")
resultado_texto.config(state=DISABLED)
return
resultado_texto.insert(END, "Informação não encontrada.")
resultado_texto.config(state=DISABLED) # Função para limpar o resultado
def limpar():
resultado_texto.config(state=NORMAL)
resultado_texto.delete("1.0", END)
resultado_texto.config(state=DISABLED) # Configuração da janela
root = Tk()
root.geometry("800x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Secretário-Geral do Partido Socialista") # Títulos
titulo = Label(text="Secretário-Geral do Partido Socialista",
font=("Arial", 23, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.13, rely=0.05) texto_sub1 = Label(text="Escolha a opção:",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.15, rely=0.32) # Dropdown
var = StringVar()
dropDownList = ["Mário Soares", "Vítor Constâncio", "Jorge Sampaio",
"António Guterres", "Eduardo Ferro Rodrigues", "José Sócrates",
"António José Seguro", "António Costa","Pedro Nuno Santos","José Luís Carneiro"]
dropdown = OptionMenu(root, var, *dropDownList)
var.set(dropDownList[0])
dropdown.place(relx=0.45, rely=0.32, relwidth=0.45)
dropdown.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 18, "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 18, "bold")) # Botões
but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=mostrar_info)
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 resultado com Scrollbar
resultado_frame = Frame(root)
resultado_frame.place(relx=0.05, rely=0.75, relwidth=0.9, relheight=0.2) scrollbar = Scrollbar(resultado_frame)
scrollbar.pack(side=RIGHT, fill=Y) resultado_texto = Text(resultado_frame, font=("Arial", 12, "bold"),
yscrollcommand=scrollbar.set, wrap=WORD, bg="#cfe2f3")
resultado_texto.pack(fill=BOTH, expand=True)
resultado_texto.config(state=DISABLED) scrollbar.config(command=resultado_texto.yview) root.mainloop()
0