Técnicas de Judo para cada cinto

from tkinter import *
from tkinter import messagebox
import webbrowser

# Função para abrir links no navegador
def abrir_link(url):
webbrowser.open_new(url)

# Função para mostrar o cinto com cor
def mostrar_cinto(cor1, cor2=None):
canvas.delete("all")
largura = 300
altura = 40
if cor2:
canvas.create_rectangle(0, 0, largura // 2, altura, fill=cor1, outline="")
canvas.create_rectangle(largura // 2, 0, largura, altura, fill=cor2, outline="")
else:
canvas.create_rectangle(0, 0, largura, altura, fill=cor1, outline="")

# Janela de ajuda
def mostrar_ajuda():
texto_ajuda = (
"Esta aplicação mostra as técnicas de judo associadas a cada cinto.\n\n"
"1. Seleciona a cor do cinto.\n"
"2. Vê a lista de técnicas e clica para ver o vídeo.\n"
"3. O cinto será mostrado ao lado da seleção."
)
messagebox.showinfo("Ajuda - Cintos de Judo", texto_ajuda)

# Interface principal
root = Tk()
root.geometry("700x550")
root.resizable(0, 0)
root.config(bg="#FAFAD2")
root.title("Cintos de Judo")

# Mapeamento de categorias para cores
categorias_cores = {
"Pernas": "#4682B4", # Azul
"Quadril": "#FFD700", # Amarelo
"Sacrifício": "#DC143C", # Vermelho
"Braços": "#8A2BE2", # Roxo
"Outros": "#3CB371" # Verde
}

# Título
titulo = Label(text="Cintos de Judo", font=("Arial", 28, "bold"), bg="#FAFAD2", fg="black")
titulo.place(relx=0.24, rely=0.05)

# Botão de Ajuda
btn_ajuda = Button(root, text="Ajuda", command=mostrar_ajuda,
font=("Arial", 10, "bold"), bg="#90EE90", fg="black")
btn_ajuda.place(relx=0.87, rely=0.05)

# Lista de cores de cintos
lista_cintos = [
"Branco (6º Kyu)",
"Amarelo (5º Kyu)",
"Laranja (4º Kyu)",
"Verde (3º Kyu)",
"Azul (2º Kyu)",
"Castanho (1º Kyu)"
]

var = StringVar()
var.set(lista_cintos[0])

# Canvas para o cinto
canvas = Canvas(root, width=300, height=40, bg="#FAFAD2", highlightthickness=0)
canvas.place(relx=0.4, rely=0.45)

# Resultado texto
resultado_texto = Label(text="", font=("Arial", 12, "bold"), bg="#cfe2f3", anchor="nw", justify="left")
resultado_texto.place(relx=0.05, rely=0.55, relwidth=0.9, relheight=0.15)

link_frame = Frame(root, bg="#FAFAD2")
link_frame.place(relx=0.05, rely=0.75, relwidth=0.9, relheight=0.12)

# Legenda
legenda = Label(root, text="Legenda: Azul - Pernas | Amarelo - Quadril | Vermelho - Sacrifício | Roxo - Braços | Verde - Outros",
font=("Arial", 10, "bold"), bg="#FAFAD2", fg="black")
legenda.place(relx=0.05, rely=0.90)

# Categorias por técnica
todas_tecnicas = {
"Branco (6º Kyu)": [],
"Amarelo (5º Kyu)": [
("Deashi Harai", "https://www.youtube.com/watch?v=4BUUvqxi_Kk", "Pernas"),
("Hiza Guruma", "https://www.youtube.com/watch?v=JPJx9-oAVns", "Pernas"),
("Sasae Tsurikomi Ashi", "https://www.youtube.com/watch?v=699i--pvYmE", "Pernas"),
("Uki Goshi", "https://www.youtube.com/watch?v=bPKwtB4lyOQ", "Quadril"),
("Osoto Gari", "https://www.youtube.com/watch?v=c-A_nP7mKAc", "Pernas"),
("O Goshi", "https://www.youtube.com/watch?v=yhu1mfy2vJ4", "Quadril"),
("Ouchi Gari", "https://www.youtube.com/watch?v=0itJFhV9pDQ", "Pernas"),
("Seoi Nage", "https://www.youtube.com/watch?v=zIq0xI0ogxk", "Braços")
],
"Laranja (4º Kyu)": [
("Ko-soto-gari", "https://www.youtube.com/watch?v=jeQ541ScLB4", "Pernas"),
("Ko-uchi-gari", "https://www.youtube.com/watch?v=3Jb3tZvr9Ng", "Pernas"),
("Koshi-guruma", "https://www.youtube.com/watch?v=SU7Id6uVJ44", "Quadril"),
("Tsurikomi-goshi", "https://www.youtube.com/watch?v=McfzA0yRVt4", "Quadril"),
("Okuri-ashi-harai", "https://www.youtube.com/watch?v=nw1ZdRjrdRI", "Pernas"),
("Tai-otoshi", "https://www.youtube.com/watch?v=4x6S3Q-Ktv8", "Braços"),
("Harai-goshi", "https://www.youtube.com/watch?v=qTo8HlAAkOo", "Quadril"),
("Uchi-mata", "https://www.youtube.com/watch?v=iUpSu5J-bgw", "Quadril")
],
"Verde (3º Kyu)": [
("Ko-soto-gake", "https://www.youtube.com/watch?v=8b6kY4s4zH4", "Pernas"),
("Tsuri-goshi", "https://www.youtube.com/watch?v=51Htlp7xEvE", "Quadril"),
("Yoko-otoshi", "https://www.youtube.com/watch?v=MnNG67pF_a0", "Sacrifício"),
("Ashi-guruma", "https://www.youtube.com/watch?v=ROeayhvom9U", "Pernas"),
("Hane-goshi", "https://www.youtube.com/watch?v=M9_7De6A1kk", "Quadril"),
("Harai-tsurikomi-ashi", "https://www.youtube.com/watch?v=gGPXvWL8VbE", "Pernas"),
("Tomoe-nage", "https://www.youtube.com/watch?v=880WbHvHv6A", "Sacrifício"),
("Kata-guruma", "https://www.youtube.com/watch?v=cnHRhSy8yi4", "Braços")
],
"Azul (2º Kyu)": [
("Sumi-gaeshi", "https://www.youtube.com/watch?v=5VhduA5xkbA", "Sacrifício"),
("Tani-otoshi", "https://www.youtube.com/watch?v=3b9Me3Fohpk", "Sacrifício"),
("Hane-makikomi", "https://www.youtube.com/watch?v=6CRBGLGz9j8", "Quadril"),
("Sukui-nage", "https://www.youtube.com/watch?v=vU6aJ2kFxoI", "Braços"),
("Utsuri-goshi", "https://www.youtube.com/watch?v=4pQd_bEnlf0", "Quadril"),
("O-guruma", "https://www.youtube.com/watch?v=SnZciTAY9vc", "Pernas"),
("Soto-makikomi", "https://www.youtube.com/watch?v=bWG9O1BVKtQ", "Quadril"),
("Uki-otoshi", "https://www.youtube.com/watch?v=6H5tmncOY4Q", "Braços")
],
"Castanho (1º Kyu)": [
("O-soto-guruma", "https://www.youtube.com/watch?v=92KbCm6pQeI", "Pernas"),
("Uki-waza", "https://www.youtube.com/watch?v=weVOpJ63gII", "Sacrifício"),
("Yoko-wakare", "https://www.youtube.com/watch?v=bp1tscHlePI", "Sacrifício"),
("Yoko-guruma", "https://www.youtube.com/watch?v=MehP6I5cY2c", "Sacrifício"),
("Ushiro-goshi", "https://www.youtube.com/watch?v=ORIYstuxYT8", "Quadril"),
("Ura-nage", "https://www.youtube.com/watch?v=Fgi9b8DJ5sQ", "Braços"),
("Sumi-otoshi", "https://www.youtube.com/watch?v=lLU9wv52ni0", "Braços"),
("Yoko-gake", "https://www.youtube.com/watch?v=tP1Sj1uDfSo", "Pernas")
]
}

# Dropdown e rotulo
Label(text="Cor do cinto:", font=("Arial", 18, "bold"), bg="#FAFAD2", fg="black").place(relx=0.05, rely=0.45)
dropdown = OptionMenu(root, var, *lista_cintos)
dropdown.place(relx=0.13, rely=0.25, relwidth=0.7)
dropdown.config(background='#4682B4', foreground="#F5F5DC", font=("Arial", 18, "bold"))
dropdown["menu"].config(background="#4682B4", foreground="#F5F5DC", font=("Arial", 16))

# Função principal para atualizar

def app(*args):
for widget in link_frame.winfo_children():
widget.destroy()

selecao = var.get()
mostrar_cinto("white")
resultado_texto.config(text="")

if selecao not in todas_tecnicas:
resultado_texto.config(text="Sem técnicas obrigatórias.")
return

tecnicas = todas_tecnicas[selecao]
if not tecnicas:
resultado_texto.config(text="Sem técnicas obrigatórias.\nFoco em postura, pegada e equilíbrio básico.")
return

resultado_texto.config(text="Técnicas:")

for i, (nome, url, categoria) in enumerate(tecnicas):
cor_botao = categorias_cores.get(categoria, "gray")
botao = Button(link_frame, text=nome, font=("Arial", 10, "bold"),
bg=cor_botao, fg="white", cursor="hand2", command=lambda u=url: abrir_link(u))
botao.grid(row=i // 4, column=i % 4, padx=5, pady=2, sticky="ew")

var.trace("w", app)
app()
root.mainloop()



Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação