from tkinter import *
from collections import defaultdict
libertadores_champions = {
1960: ("Peñarol", "Uruguai"),
1961: ("Peñarol", "Uruguai"),
1962: ("Santos", "Brasil"),
1963: ("Santos", "Brasil"),
1964: ("Independiente", "Argentina"),
1965: ("Independiente", "Argentina"),
1966: ("Peñarol", "Uruguai"),
1967: ("Racing", "Argentina"),
1968: ("Estudiantes", "Argentina"),
1969: ("Estudiantes", "Argentina"),
1970: ("Estudiantes", "Argentina"),
1971: ("Nacional", "Uruguai"),
1972: ("Independiente", "Argentina"),
1973: ("Independiente", "Argentina"),
1974: ("Independiente", "Argentina"),
1975: ("Independiente", "Argentina"),
1976: ("Cruzeiro", "Brasil"),
1977: ("Boca Juniors", "Argentina"),
1978: ("Boca Juniors", "Argentina"),
1979: ("Olimpia", "Paraguai"),
1980: ("Nacional", "Uruguai"),
1981: ("Flamengo", "Brasil"),
1982: ("Peñarol", "Uruguai"),
1983: ("Grêmio", "Brasil"),
1984: ("Independiente", "Argentina"),
1985: ("Argentinos Juniors", "Argentina"),
1986: ("River Plate", "Argentina"),
1987: ("Peñarol", "Uruguai"),
1988: ("Nacional", "Uruguai"),
1989: ("Atlético Nacional", "Colômbia"),
1990: ("Olimpia", "Paraguai"),
1991: ("Colo-Colo", "Chile"),
1992: ("São Paulo", "Brasil"),
1993: ("São Paulo", "Brasil"),
1994: ("Vélez Sarsfield", "Argentina"),
1995: ("Grêmio", "Brasil"),
1996: ("River Plate", "Argentina"),
1997: ("Cruzeiro", "Brasil"),
1998: ("Vasco da Gama", "Brasil"),
1999: ("Palmeiras", "Brasil"),
2000: ("Boca Juniors", "Argentina"),
2001: ("Boca Juniors", "Argentina"),
2002: ("Olimpia", "Paraguai"),
2003: ("Boca Juniors", "Argentina"),
2004: ("Once Caldas", "Colômbia"),
2005: ("São Paulo", "Brasil"),
2006: ("Internacional", "Brasil"),
2007: ("Boca Juniors", "Argentina"),
2008: ("LDU Quito", "Equador"),
2009: ("Estudiantes", "Argentina"),
2010: ("Internacional", "Brasil"),
2011: ("Santos", "Brasil"),
2012: ("Corinthians", "Brasil"),
2013: ("Atlético Mineiro", "Brasil"),
2014: ("San Lorenzo", "Argentina"),
2015: ("River Plate", "Argentina"),
2016: ("Atlético Nacional", "Colômbia"),
2017: ("Grêmio", "Brasil"),
2018: ("River Plate", "Argentina"),
2019: ("Flamengo", "Brasil"),
2020: ("Palmeiras", "Brasil"),
2021: ("Palmeiras", "Brasil"),
2022: ("Flamengo", "Brasil"),
2023: ("Fluminense", "Brasil"),
2024: ("Botafogo", "Brasil"),
}
titulos_por_clube = defaultdict(list)
for ano, (clube, pais) in libertadores_champions.items():
titulos_por_clube[clube].append(ano)
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Copa dos Libertadores")
titulo = Label(text="Copa dos Libertadores",
font=("Arial", 30, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.2, rely=0.05)
texto_sub1 = Label(text="Ano: ",
font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.2, rely=0.3)
dropDownList = sorted([str(ano) for ano in libertadores_champions.keys()])
var = StringVar()
var.set(dropDownList[0])
dropdown = OptionMenu(root, var, *dropDownList)
dropdown.place(relx=0.38, rely=0.3, relwidth=0.4)
dropdown.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 20, "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 20, "bold"))
def limpar():
resultado_texto.config(state=NORMAL)
resultado_texto.delete("1.0", END)
resultado_texto.config(state=DISABLED)
def app():
ano = int(var.get())
resultado_texto.config(state=NORMAL)
resultado_texto.delete("1.0", END)
if ano not in libertadores_champions:
mensagem = f"Nenhuma final registrada para o ano {ano}."
mensagem1 = ""
else:
clube, pais = libertadores_champions[ano]
mensagem = f"Em {ano}, o campeão foi {clube} ({pais})"
titulos = titulos_por_clube[clube]
if len(titulos) > 1:
anos = ", ".join(map(str, sorted(titulos)))
mensagem1 = f"→ {clube} tem {len(titulos)} títulos da Libertadores: {anos}"
else:
mensagem1 = f"→ Esse foi o único título da Libertadores conquistado pelo {clube}."
resultado_texto.insert(END, f"{mensagem}\n{mensagem1}")
resultado_texto.config(state=DISABLED)
but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.5, 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.5, 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.5, relwidth=0.25, relheight=0.1)
frame_resultado = Frame(root)
frame_resultado.place(relx=0.05, rely=0.65, relwidth=0.9, relheight=0.28)
scrollbar = Scrollbar(frame_resultado)
scrollbar.pack(side=RIGHT, fill=Y)
resultado_texto = Text(frame_resultado, wrap=WORD, font=("Arial", 12, "bold"), yscrollcommand=scrollbar.set)
resultado_texto.pack(fill=BOTH, expand=True)
resultado_texto.config(state=DISABLED, bg="#cfe2f3")
scrollbar.config(command=resultado_texto.yview)
root.mainloop()