from tkinter import *
import math
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calcular o Número de voltas de uma corrida da F1")
# Título
titulo = Label(
root,
text="Calcular o Número de voltas de uma corrida da F1",
font=("Arial", 19, "bold"),
bg="#103030",
fg="#49e3e3"
)
titulo.place(relx=0.05, rely=0.05)
# Texto do comprimento da pista
texto_sub1 = Label(
root,
text="Comprimento da pista (km):",
font=("Arial", 18, "bold"),
bg="#103030",
fg="#49e3e3"
)
texto_sub1.place(relx=0.05, rely=0.32)
# Campo de entrada
Comprimento_pista = StringVar()
Comprimento_pista_entrada = Entry(
root,
textvariable=Comprimento_pista,
font=("Arial", 12, "bold"),
bg="white",
fg="blue",
justify='center'
)
Comprimento_pista_entrada.place(relx=0.55, rely=0.33, relwidth=0.35)
Comprimento_pista_entrada.focus()
# Opção de tipo de corrida (normal ou Mônaco)
tipo_corrida = StringVar(value="normal")
radio_normal = Radiobutton(
root,
text="Corrida padrão (~305 km)",
variable=tipo_corrida,
value="normal",
bg="#103030",
fg="#49e3e3",
selectcolor="#103030",
font=("Arial", 10, "bold"),
activebackground="#103030",
activeforeground="#49e3e3"
)
radio_normal.place(relx=0.1, rely=0.42)
radio_monaco = Radiobutton(
root,
text="GP de Mônaco (~260 km)",
variable=tipo_corrida,
value="monaco",
bg="#103030",
fg="#49e3e3",
selectcolor="#103030",
font=("Arial", 10, "bold"),
activebackground="#103030",
activeforeground="#49e3e3"
)
radio_monaco.place(relx=0.45, rely=0.42)
def limpar():
Comprimento_pista_entrada.delete(0, END)
resultado_texto.config(text="")
def app():
try:
# Define a distância total da corrida
if tipo_corrida.get() == "normal":
distancia_total = 305
else:
distancia_total = 260 # Mônaco
comprimento = float(Comprimento_pista.get().replace(",", "."))
if comprimento <= 0:
resultado_texto.config(text="Digite um valor maior que zero.")
return
voltas = math.ceil(distancia_total / comprimento)
mensagem = f"Número de voltas: {voltas} voltas\n Quilómetros totais: {voltas*comprimento}"
resultado_texto.config(text=mensagem)
except ValueError:
resultado_texto.config(text="Por favor, digite um número válido para o comprimento da pista.")
# Botão Calcular
but1 = Button(
root,
text="Calcular",
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)
# Botão Limpar
but_limpar = Button(
root,
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)
# Botão Sair
but_sair = Button(
root,
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)
# Resultado
resultado_texto = Label(
root,
text="",
font=("Arial", 12, "bold"),
bg="#cfe2f3"
)
resultado_texto.place(relx=0.05, rely=0.75, relwidth=0.9, relheight=0.2)
root.mainloop()