from tkinter import *
# Janela principal
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Escala de Beaufort (vento na terra)")
# Título
titulo = Label(
text="Escala de Beaufort (vento na terra)",
font=("Arial", 28, "bold"),
bg="#103030",
fg="#49e3e3"
)
titulo.place(relx=0.05, rely=0.05)
# Texto
texto_sub1 = Label(
text="Velocidade do vento (km/h):",
font=("Arial", 18, "bold"),
bg="#103030",
fg="#49e3e3"
)
texto_sub1.place(relx=0.05, rely=0.32)
# Entrada
Velocidade_vento = StringVar()
Velocidade_vento_entrada = Entry(
textvariable=Velocidade_vento,
font=("Arial", 12, "bold"),
bg="white",
fg="blue",
justify="center"
)
Velocidade_vento_entrada.place(relx=0.55, rely=0.33, relwidth=0.35)
Velocidade_vento_entrada.focus()
# Funções
def limpar():
Velocidade_vento_entrada.delete(0, END)
resultado_texto.config(text="", bg="#cfe2f3")
def app():
try:
vento = int(Velocidade_vento.get())
# Mensagem da Escala de Beaufort
if vento < 0:
mensagem = "Velocidade do vento não pode ser negativa."
elif vento == 0:
mensagem = "Escala de Beaufort: 0\nCalmo – fumaça sobe verticalmente"
elif 1 <= vento <= 5:
mensagem = "Escala de Beaufort: 1\nBrisa muito fraca – fumaça se move ligeiramente"
elif 6 <= vento <= 11:
mensagem = "Escala de Beaufort: 2\nBrisa fraca – folhas se movem"
elif 12 <= vento <= 19:
mensagem = "Escala de Beaufort: 3\nBrisa leve – pequenas árvores balançam"
elif 20 <= vento <= 28:
mensagem = "Escala de Beaufort: 4\nBrisa moderada – galhos pequenos se movem"
elif 29 <= vento <= 38:
mensagem = "Escala de Beaufort: 5\nBrisa fresca – árvores de pequeno porte balançam"
elif 39 <= vento <= 49:
mensagem = "Escala de Beaufort: 6\nVento forte – grandes galhos se movem"
elif 50 <= vento <= 61:
mensagem = "Escala de Beaufort: 7\nVento muito forte – árvores inteiras balançam"
elif 62 <= vento <= 74:
mensagem = "Escala de Beaufort: 8\nTempestade moderada – dificuldade para caminhar contra o vento"
elif 75 <= vento <= 88:
mensagem = "Escala de Beaufort: 9\nTempestade forte – danos leves em construções"
elif 89 <= vento <= 102:
mensagem = "Escala de Beaufort: 10\nTempestade muito forte – danos significativos"
elif 103 <= vento <= 117:
mensagem = "Escala de Beaufort: 11\nVendaval – destruição generalizada"
else:
mensagem = "Escala de Beaufort: 12\nFuracão – devastação completa"
# 🎨 Cor automática conforme intensidade do vento
if vento <= 19:
cor = "#cfe2f3" # vento fraco
elif vento <= 61:
cor = "#ffe599" # vento moderado
else:
cor = "#f4cccc" # vento forte/perigoso
resultado_texto.config(text=mensagem, bg=cor)
except ValueError:
resultado_texto.config(
text="Por favor, insira apenas números inteiros.",
bg="#f4cccc"
)
# Botões
Button(
text="Calcular",
bd=2,
bg="#107db2",
fg="white",
font=("Verdana", 12, "bold"),
command=app
).place(relx=0.1, rely=0.55, relwidth=0.25, relheight=0.1)
Button(
text="Limpar",
bd=2,
bg="#107db2",
fg="white",
font=("Verdana", 12, "bold"),
command=limpar
).place(relx=0.4, rely=0.55, relwidth=0.25, relheight=0.1)
Button(
text="Sair",
bd=2,
bg="#107db2",
fg="white",
font=("Verdana", 12, "bold"),
command=root.destroy
).place(relx=0.7, rely=0.55, relwidth=0.25, relheight=0.1)
# Resultado
resultado_texto = Label(
text="",
font=("Arial", 12, "bold"),
bg="#cfe2f3",
anchor="w",
justify="left"
)
resultado_texto.place(relx=0.05, rely=0.7, relwidth=0.9, relheight=0.2)
root.mainloop()