from tkinter import *
from collections import defaultdict
titulos = {
"Palmeiras": {
"quantidade": 12,
"anos": ["1960", "1967", "1967", "1969", "1972", "1973", "1993", "1994", "2016", "2018", "2022", "2023"]
},
"Santos": {
"quantidade": 8,
"anos": ["1961", "1962", "1963", "1964", "1965", "1968", "2002", "2004"]
},
"Corinthians": {
"quantidade": 7,
"anos": ["1990", "1998", "1999", "2005", "2011", "2015", "2017"]
},
"São Paulo": {
"quantidade": 6,
"anos": ["1977", "1986", "1991", "2006", "2007", "2008"]
},
"Flamengo": {
"quantidade": 8,
"anos": ["1980", "1982", "1983", "1987", "1992", "2009", "2019", "2020"]
},
"Cruzeiro": {
"quantidade": 4,
"anos": ["1966", "2003", "2013", "2014"]
},
"Internacional": {
"quantidade": 3,
"anos": ["1975", "1976", "1979"]
},
"Grêmio": {
"quantidade": 2,
"anos": ["1981", "1996"]
},
"Botafogo": {
"quantidade": 2,
"anos": ["1968", "1995"]
},
"Vasco da Gama": {
"quantidade": 4,
"anos": ["1974", "1989", "1997", "2000"]
},
"Atlético Mineiro": {
"quantidade": 2,
"anos": ["1971", "2021"]
},
"Fluminense": {
"quantidade": 4,
"anos": ["1970", "1984", "2010", "2012"]
},
"Bahia": {
"quantidade": 2,
"anos": ["1959", "1988"]
}
}
def sequencias_consecutivas(anos_lista):
anos = sorted(int(ano) for ano in anos_lista)
sequencias = []
atual = [anos[0]]
for i in range(1, len(anos)):
if anos[i] == anos[i - 1] + 1:
atual.append(anos[i])
else:
if len(atual) >= 2:
sequencias.append(list(atual))
atual = [anos[i]]
if len(atual) >= 2:
sequencias.append(list(atual))
tipos = defaultdict(list)
for seq in sequencias:
tipos[len(seq)].append(seq)
return tipos
# Interface gráfica
root = Tk()
root.geometry("800x500")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Campeões do Campeonato Brasileiro")
titulo = Label(text="Campeões do Campeonato Brasileiro",
font=("Arial", 22, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05)
var = StringVar()
dropDownList = list(titulos.keys())
dropdown = OptionMenu(root, var, *dropDownList)
var.set(dropDownList[0])
dropdown.place(relx=0.25, rely=0.2, relwidth=0.5)
dropdown.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 15, "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 12, "bold"))
# Área de texto com scroll
scrollbar = Scrollbar(root)
scrollbar.place(relx=0.95, rely=0.45, relheight=0.5)
resultado_texto = Text(root, font=("Arial", 11), bg="#cfe2f3", yscrollcommand=scrollbar.set, wrap=WORD)
resultado_texto.place(relx=0.05, rely=0.45, relwidth=0.9, relheight=0.5)
scrollbar.config(command=resultado_texto.yview)
# Funções dos botões
def limpar():
resultado_texto.delete(1.0, END)
def app():
clube = var.get()
dados = titulos[clube]
anos = dados["anos"]
total = dados["quantidade"]
texto = f"{clube}:\nTotal de títulos: {total}\n\nTítulos:\n"
texto += ", ".join(anos)
texto += "\n\nConquistas consecutivas:\n"
conquistas = sequencias_consecutivas(anos)
nomes = {2: "Bi", 3: "Tri", 4: "Tetra", 5: "Penta", 6: "Hexa", 7: "Hepta", 8: "Octa"}
for k in sorted(conquistas):
nome = nomes.get(k, f"{k}-campeonatos")
texto += f"\n{nome} ({len(conquistas[k])}):"
for seq in conquistas[k]:
texto += "\n - " + ", ".join(str(a) for a in seq)
resultado_texto.delete(1.0, END)
resultado_texto.insert(END, texto)
but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.33, relwidth=0.25, relheight=0.07)
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.33, relwidth=0.25, relheight=0.07)
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.33, relwidth=0.25, relheight=0.07)
root.mainloop()