from tkinter import * root = Tk()
root.geometry("700x500")
root.resizable(0, 0)
root.config(bg="#101820")
root.title("Bandeiras da Fórmula 1") titulo = Label(text="Bandeiras da Fórmula 1",
font=("Arial", 26, "bold"), bg="#101820", fg="#FF1801")
titulo.place(relx=0.18, rely=0.05) texto_sub1 = Label(text="Selecione a Bandeira:",
font=("Arial", 18), bg="#101820", fg="#FFFFFF")
texto_sub1.place(relx=0.05, rely=0.25) var = StringVar()
dropDownList = [
"Verde", "Amarela", "Vermelha", "Azul", "Branca",
"Preta", "Preta com círculo laranja", "Preta e branca",
"Amarela com listras vermelhas", "Quadriculada"
]
dropdown = OptionMenu(root, var, *dropDownList)
var.set(dropDownList[0])
dropdown.place(relx=0.05, rely=0.32, relwidth=0.9)
dropdown.config(background='#FF1801', foreground="white", font=("Arial", 16, "bold"))
dropdown["menu"].config(background='#202020', foreground="white", font=("Arial", 12)) resultado_canvas = Canvas(root, width=640, height=80, bg="#FFFFFF", highlightthickness=0)
resultado_canvas.place(relx=0.05, rely=0.5, relwidth=0.9, relheight=0.15) resultado_texto = Label(text="", font=("Arial", 14, "bold"), bg="#FFFFFF", wraplength=640, justify="center")
resultado_texto.place(relx=0.05, rely=0.7, relwidth=0.9, relheight=0.2) def app():
bandeira = var.get().strip()
resultado_canvas.delete("all") if bandeira == "Verde":
mensagem = "Pista liberada. Vá em frente!"
resultado_canvas.create_rectangle(0, 0, 640, 80, fill="green", outline="") elif bandeira == "Amarela":
mensagem = "Perigo à frente. Reduza a velocidade, não ultrapasse!"
resultado_canvas.create_rectangle(0, 0, 640, 80, fill="yellow", outline="") elif bandeira == "Vermelha":
mensagem = "Corrida ou sessão interrompida. Retornar aos boxes."
resultado_canvas.create_rectangle(0, 0, 640, 80, fill="red", outline="") elif bandeira == "Azul":
mensagem = "Carro mais rápido se aproximando. Dê passagem."
resultado_canvas.create_rectangle(0, 0, 640, 80, fill="blue", outline="") elif bandeira == "Branca":
mensagem = "Veículo lento à frente na pista."
resultado_canvas.create_rectangle(0, 0, 640, 80, fill="white", outline="") elif bandeira == "Preta":
mensagem = "Desclassificação! Piloto deve ir aos boxes imediatamente."
resultado_canvas.create_rectangle(0, 0, 640, 80, fill="black", outline="") elif bandeira == "Preta com círculo laranja":
mensagem = "Problema mecânico no carro. Retornar imediatamente aos boxes."
resultado_canvas.create_rectangle(0, 0, 640, 80, fill="black", outline="")
resultado_canvas.create_oval(270, 20, 370, 60, fill="orange", outline="") elif bandeira == "Preta e branca":
mensagem = "Advertência por conduta antidesportiva. Último aviso."
resultado_canvas.create_rectangle(0, 0, 320, 80, fill="black", outline="")
resultado_canvas.create_rectangle(320, 0, 640, 80, fill="white", outline="") elif bandeira == "Amarela com listras vermelhas":
mensagem = "Pista escorregadia (óleo, sujeira, etc.). Atenção!"
for i in range(0, 640, 40):
cor = "red" if (i // 40) % 2 == 0 else "yellow"
resultado_canvas.create_rectangle(i, 0, i + 40, 80, fill=cor, outline="") elif bandeira == "Quadriculada":
mensagem = "Fim da corrida ou sessão."
tamanho = 20
for i in range(0, 640, tamanho):
for j in range(0, 80, tamanho):
cor = "white" if (i // tamanho + j // tamanho) % 2 == 0 else "black"
resultado_canvas.create_rectangle(i, j, i + tamanho, j + tamanho, fill=cor, outline="") resultado_texto.config(text=mensagem) def limpar():
resultado_texto.config(text="")
resultado_canvas.delete("all") Button(text="Mostrar", bg='#FF1801', fg='white',
font=('Arial', 12, 'bold'), command=app).place(relx=0.1, rely=0.42, relwidth=0.25, relheight=0.07) Button(text="Limpar", bg='#FF1801', fg='white',
font=('Arial', 12, 'bold'), command=limpar).place(relx=0.4, rely=0.42, relwidth=0.25, relheight=0.07) Button(text="Sair", bg='#FF1801', fg='white',
font=('Arial', 12, 'bold'), command=root.destroy).place(relx=0.7, rely=0.42, relwidth=0.25, relheight=0.07) root.mainloop()
#Outra Versão
from tkinter import *
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Bandeiras da Fórmula 1")
titulo = Label(text="Bandeiras da Fórmula 1",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.2, rely=0.05) texto_sub1 = Label(text="Escolha a Bandeira:",
font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.3, rely=0.23)
var = StringVar()
dropDownList = [
"Bandeira de Xadrez (Preta e Branca)", "Bandeira Amarela", "Bandeira Verde",
"Bandeira Vermelha", "Bandeira Preta", "Bandeira Preta com Círculo Laranja",
"Bandeira Preta e Branca (na diagonal)", "Bandeira Branca", "Bandeira Azul",
"Bandeira com Faixas Amarela e Vermelha (vertical)"
]
dropdown = OptionMenu(root, var, *dropDownList)
var.set(dropDownList[0])
dropdown.place(relx=0.05, rely=0.35, relwidth=0.9)
dropdown.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "18", "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", "18", "bold")) def limpar():
resultado_texto.config(text="")
def app():
v = var.get()
if v == "Bandeira de Xadrez (Preta e Branca)":
mensagem = "Significado: Fim da corrida, sessão de treinos ou qualificação."
elif v == "Bandeira Amarela":
mensagem = "Significado: Perigo na pista\n" \
" -> Uma bandeira amarela: Levantar o pé (abrandar), não ultrapassar.\n" \
"-> Duas bandeiras amarelas: Abrandar significativamente,\n" \
" estar preparado para parar se necessário.\n" \
"Pode indicar acidente, carro parado ou detritos na pista."
elif v == "Bandeira Verde":
mensagem = "Significado: Pista livre de perigos.\n(Mostrada após uma zona com bandeiras amarelas.)"
elif v == "Bandeira Vermelha":
mensagem = "Significado: Interrupção imediata da sessão.\n" \
"Pode dever-se a um acidente grave, pista bloqueada \n" \
"ou condições meteorológicas perigosas."
elif v == "Bandeira Preta":
mensagem = "Significado: Desclassificação do piloto.\n" \
"O piloto tem de regressar imediatamente às boxes."
elif v == "Bandeira Preta com Círculo Laranja":
mensagem = "Significado: Problema técnico no carro.\n" \
"O piloto deve regressar às boxes para reparar o problema."
elif v == "Bandeira Preta e Branca (na diagonal)":
mensagem = "Significado: Advertência por comportamento antidesportivo.\n" \
"Se o comportamento se repetir, poderá haver penalização."
elif v == "Bandeira Branca":
mensagem = "Significado: Veículo mais lento à frente na pista.\n" \
"Pode ser um carro com problemas,\n" \
"em procedimento lento ou de segurança."
elif v == "Bandeira Azul":
mensagem = "Significado: O piloto deve ceder passagem.\n" \
"Mostrada aos pilotos que vão ser dobrados por carros mais rápidos."
elif v == "Bandeira com Faixas Amarela e Vermelha (vertical)":
mensagem = "Significado: A pista está escorregadia.\n" \
"Pode haver óleo, água ou outros detritos na pista."
else:
mensagem = "Seleção inválida."
resultado_texto.config(text=mensagem) but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.55, 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.55, 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.55, relwidth=0.25, relheight=0.1) resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3", anchor="nw", justify="left")
resultado_texto.place(relx=0.05, rely=0.7, relwidth=0.9, relheight=0.25) root.mainloop()