Mundo em Python

Campeões da Liga dos Campeões da CAF

from tkinter import *
caf_champions_league_campeoes = [
{"temporada": "1964", "campeao": "Oryx Douala", "pais": "Camarões", "local": "Acra, Gana"},
{"temporada": "1966", "campeao": "Stade d'Abidjan", "pais": "Costa do Marfim", "local": "Final em dois jogos"},
{"temporada": "1970", "campeao": "Asante Kotoko", "pais": "Gana", "local": "Final em dois jogos"},
{"temporada": "1972", "campeao": "Hafia FC", "pais": "Guiné", "local": "Final em dois jogos"},
{"temporada": "1977", "campeao": "Hafia FC", "pais": "Guiné", "local": "Final em dois jogos"},
{"temporada": "1981", "campeao": "JE Tizi Ouzou (atual JS Kabylie)", "pais": "Argélia", "local": "Final em dois jogos"},
{"temporada": "1983", "campeao": "Asante Kotoko", "pais": "Gana", "local": "Final em dois jogos"},
{"temporada": "1987", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"},
{"temporada": "1997", "campeao": "Raja Casablanca", "pais": "Marrocos", "local": "Final em dois jogos"},
{"temporada": "1998", "campeao": "ASEC Mimosas", "pais": "Costa do Marfim", "local": "Final em dois jogos"},
{"temporada": "2000", "campeao": "Accra Hearts of Oak", "pais": "Gana", "local": "Final em dois jogos"},
{"temporada": "2001", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"},
{"temporada": "2003", "campeao": "Enyimba", "pais": "Nigéria", "local": "Final em dois jogos"},
{"temporada": "2004", "campeao": "Enyimba", "pais": "Nigéria", "local": "Final em dois jogos"},
{"temporada": "2006", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"},
{"temporada": "2008", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"},
{"temporada": "2009", "campeao": "TP Mazembe", "pais": "RD Congo", "local": "Final em dois jogos"},
{"temporada": "2010", "campeao": "TP Mazembe", "pais": "RD Congo", "local": "Final em dois jogos"},
{"temporada": "2012", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"},
{"temporada": "2013", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"},
{"temporada": "2016", "campeao": "Mamelodi Sundowns", "pais": "África do Sul", "local": "Final em dois jogos"},
{"temporada": "2017", "campeao": "Wydad Casablanca", "pais": "Marrocos", "local": "Final em dois jogos"},
{"temporada": "2018", "campeao": "Espérance de Tunis", "pais": "Tunísia", "local": "Final em dois jogos"},
{"temporada": "2019", "campeao": "Espérance de Tunis", "pais": "Tunísia", "local": "Final em dois jogos"},
{"temporada": "2020", "campeao": "Al Ahly", "pais": "Egito", "local": "Cairo, Egito (Estádio Internacional do Cairo)"},
{"temporada": "2021", "campeao": "Al Ahly", "pais": "Egito", "local": "Casablanca, Marrocos (Estádio Mohammed V)"},
{"temporada": "2022", "campeao": "Wydad Casablanca", "pais": "Marrocos", "local": "Casablanca, Marrocos (Estádio Mohammed V)"},
{"temporada": "2023", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"}, # Ida e volta na realidade
{"temporada": "2024", "campeao": "Al Ahly", "pais": "Egito", "local": "Final em dois jogos"}, # Ida e volta na realidade
{"temporada": "2025", "campeao": "Pyramids FC", "pais": "Egito", "local": "Cairo, Egito (Estádio 30 de Junho)"}
] # Processar os dados para contar os títulos por clube
clubes_titulos_caf = {}
for item in caf_champions_league_campeoes:
clube = item["campeao"]
epoca = item["temporada"]
if clube not in clubes_titulos_caf:
clubes_titulos_caf[clube] = []
clubes_titulos_caf[clube].append(epoca) # Configuração da janela Tkinter
root = Tk()
root.geometry("600x600")
root.resizable(0, 0)
root.config(bg="#34495E") # Cor de fundo mais escura
root.title("Campeões da Liga dos Campeões da CAF")
texto_titulo = Label(root, text="Campeões da Liga dos Campeões da CAF",
font=("Arial", 22, "bold"), bg="#34495E", fg="#F39C12") # Cor laranja
texto_titulo.place(relx=0.05, rely=0.02) texto_sub1 = Label(root, text="Ano:",
font=("Arial", 16, "bold"), bg="#34495E", fg="#ECF0F1") # Cor branca
texto_sub1.place(relx=0.1, rely=0.12)

dropDownList_caf = sorted([item["temporada"] for item in caf_champions_league_campeoes], reverse=True)
var_temporada_selecionada_caf = StringVar(root)
var_temporada_selecionada_caf.set("Selecione uma temporada") # Texto padrão

info_label_caf = Label(root, text="", font=("Arial", 14), bg="#2C3E50", fg="#FFFFFF", justify=LEFT, anchor="nw",
wraplength=500, relief="groove", bd=2) # Adiciona borda e estilo
info_label_caf.place(relx=0.05, rely=0.25, relwidth=0.9, relheight=0.6) # Aumenta a altura

def exibir_vencedor_temporada_caf(*args):

temporada_selecionada = var_temporada_selecionada_caf.get() info_label_caf.config(text="") # Limpa o label antes de exibir novas informações

if temporada_selecionada == "Selecione uma temporada":
return

vencedor = None
pais_vencedor = None
local_final = None
for item in caf_champions_league_campeoes:
if item["temporada"] == temporada_selecionada:
vencedor = item["campeao"]
pais_vencedor = item["pais"]
local_final = item["local"]
break

if vencedor:
total_titulos = len(clubes_titulos_caf[vencedor])
epocas_ganhas = ", ".join(sorted(clubes_titulos_caf[vencedor])) if "Final em dois jogos" in local_final:
local_info = "Final disputada em dois jogos (ida e volta)."
else:
local_info = local_final info_text = (
f"Temporada: {temporada_selecionada}\n"
f"Campeão: {vencedor}\n"
f"País do Campeão: {pais_vencedor}\n"
f"Local da Final: {local_info}\n\n"
f"Total de títulos do clube: {total_titulos}\n"
f"Épocas em que o clube ganhou: {epocas_ganhas}"
)
info_label_caf.config(text=info_text)
else:
info_label_caf.config(text=f"Nenhum vencedor encontrado para a temporada {temporada_selecionada}.") dropdown_caf = OptionMenu(root, var_temporada_selecionada_caf, *dropDownList_caf, command=exibir_vencedor_temporada_caf)
dropdown_caf.place(relx=0.3, rely=0.12, relwidth=0.55)
dropdown_caf.config(background='#F39C12', foreground="#FFFFFF", font=("Arial", 14, "bold"), relief="raised", bd=2) # Estilo do botão
dropdown_caf["menu"].config(background='#F39C12', foreground="#FFFFFF", font=("Arial", 12, "bold")) # Estilo do menu

info_label_caf.config(text="Selecione uma temporada no menu acima para ver o vencedor e detalhes da final.") root.mainloop()
0