Mundo em Python

Presidentes da França

from tkinter import *
from tkinter.ttk import Combobox # Lista de presidentes com república, partido e datas
presidentes_franceses = [
{"nome": "Louis-Napoléon Bonaparte", "república": "Segunda República",
"partido": "Partido da Ordem", "periodo": "20/12/1848 – 02/12/1852"},

{"nome": "Adolphe Thiers", "república": "Terceira República",
"partido": "Independente (Centro-direita)", "periodo": "31/08/1871 – 24/05/1873"},
{"nome": "Patrice de Mac Mahon", "república": "Terceira República",
"partido": "Legitimista", "periodo": "24/05/1873 – 30/01/1879"},
{"nome": "Jules Grévy", "república": "Terceira República",
"partido": "Republicanos oportunistas", "periodo": "30/01/1879 – 02/12/1887"},
{"nome": "Sadi Carnot", "república": "Terceira República",
"partido": None, "periodo": "03/12/1887 – 25/06/1894"},
{"nome": "Albert Lebrun", "república": "Terceira República",
"partido": None, "periodo": "10/05/1932 – 11/07/1940"},

{"nome": "Vincent Auriol", "república": "Quarta República",
"partido": "SFIO (Socialista)", "periodo": "16/01/1947 – 16/01/1954"},
{"nome": "René Coty", "república": "Quarta República",
"partido": "Centro Democrático", "periodo": "16/01/1954 – 08/01/1959"},

{"nome": "Charles de Gaulle", "república": "Quinta República",
"partido": "UNR", "periodo": "08/01/1959 – 28/04/1969"},
{"nome": "Georges Pompidou", "república": "Quinta República",
"partido": "UDR", "periodo": "20/06/1969 – 02/04/1974"},
{"nome": "Valéry Giscard d’Estaing", "república": "Quinta República",
"partido": "UDF", "periodo": "27/05/1974 – 21/05/1981"},
{"nome": "François Mitterrand", "república": "Quinta República",
"partido": "Partido Socialista", "periodo": "21/05/1981 – 17/05/1995"},
{"nome": "Jacques Chirac", "república": "Quinta República",
"partido": "RPR / UMP", "periodo": "17/05/1995 – 16/05/2007"},
{"nome": "Nicolas Sarkozy", "república": "Quinta República",
"partido": "UMP", "periodo": "16/05/2007 – 15/05/2012"},
{"nome": "François Hollande", "república": "Quinta República",
"partido": "Partido Socialista", "periodo": "15/05/2012 – 14/05/2017"},
{"nome": "Emmanuel Macron", "república": "Quinta República",
"partido": "Renascimento (RE)", "periodo": "14/05/2017 – presente"},
] # Categorias fixas na ordem correta
categorias = ["Segunda República", "Terceira República", "Quarta República", "Quinta República"]
def atualizar_presidentes(event=None):
categoria_escolhida = var_categoria.get()
pres_filtrados = [p["nome"] for p in presidentes_franceses if p["república"] == categoria_escolhida]
combo_presidentes["values"] = pres_filtrados
if pres_filtrados:
combo_presidentes.set(pres_filtrados[0])
mostrar_info()
# Função para mostrar informações do presidente selecionado
def mostrar_info(event=None):
escolhido = var_presidente.get()
for p in presidentes_franceses:
if p["nome"] == escolhido:
partido = p["partido"] if p["partido"] else "Sem filiação clara"
info_label.config(text=f"República: {p['república']}\n"
f"Período: {p['periodo']}\n"
f"Partido: {partido}")
break


# Configuração da janela
root = Tk()
root.geometry("750x450")
root.resizable(0, 0)
root.config(bg="#102030")
root.title("Presidentes da França") titulo = Label(root, text="Presidentes da França",
font=("Arial", 28, "bold"), bg="#102030", fg="#49e3e3")
titulo.pack(pady=20) texto_sub_cat = Label(root, text="Escolha a República:",
font=("Arial", 16, "bold"), bg="#102030", fg="#49e3e3")
texto_sub_cat.pack(pady=5) var_categoria = StringVar()
combo_categoria = Combobox(root, textvariable=var_categoria, values=categorias, font=("Arial", 14), state="readonly")
combo_categoria.pack(pady=5, fill=X, padx=100)
combo_categoria.bind("<<ComboboxSelected>>", atualizar_presidentes) texto_sub_pres = Label(root, text="Escolha o Presidente:",
font=("Arial", 16, "bold"), bg="#102030", fg="#49e3e3")
texto_sub_pres.pack(pady=5) var_presidente = StringVar()
combo_presidentes = Combobox(root, textvariable=var_presidente, font=("Arial", 14), state="readonly")
combo_presidentes.pack(pady=5, fill=X, padx=100)
combo_presidentes.bind("<<ComboboxSelected>>", mostrar_info) info_label = Message(root, text="", font=("Arial", 14), bg="#102030", fg="#FFFFFF", width=650, justify="left")
info_label.pack(pady=30) # Inicialização
var_categoria.set(categorias[0])
atualizar_presidentes() root.mainloop()
0