Mundo em Python

Escala de Beaufort

from tkinter import *
root = Tk()
root.geometry("600x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Escala de Beaufort")
titulo = Label(text="Escala de Beaufort",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.2, rely=0.05) 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.3) 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.63, rely=0.32, relwidth=0.3)
Velocidade_Vento_entrada.focus() def limpar():
Velocidade_Vento_entrada.delete(0, END)
resultado_texto.config(text="") def app():
try:
velocidade = float(Velocidade_Vento.get())
if velocidade < 0:
resultado_texto.config(text="Valor inválido! A velocidade não pode ser negativa.")
return

if velocidade < 1:
forca = 0
descricao = "Calmaria"
efeitos = "Sem movimento de ar perceptível."
elif velocidade < 6:
forca = 1
descricao = "Brisa muito leve"
efeitos = "Folhas balançam levemente."
elif velocidade < 12:
forca = 2
descricao = "Brisa leve"
efeitos = "Folhas e galhos finos se movem."
elif velocidade < 20:
forca = 3
descricao = "Brisa fraca"
efeitos = "Pequenos galhos em movimento."
elif velocidade < 29:
forca = 4
descricao = "Brisa moderada"
efeitos = "Levanta poeira e move pequenos objetos."
elif velocidade < 39:
forca = 5
descricao = "Brisa forte"
efeitos = "Galhos grandes em movimento."
elif velocidade < 49:
forca = 6
descricao = "Vento forte"
efeitos = "Difícil caminhar contra o vento."
elif velocidade < 62:
forca = 7
descricao = "Vento muito forte"
efeitos = "Galhos quebram; árvores balançam."
elif velocidade < 75:
forca = 8
descricao = "Ventania"
efeitos = "Dificulta a locomoção; danos leves."
elif velocidade < 89:
forca = 9
descricao = "Ventania forte"
efeitos = "Danos em construções; árvores caem."
elif velocidade < 103:
forca = 10
descricao = "Tempestade"
efeitos = "Estragos significativos."
elif velocidade < 118:
forca = 11
descricao = "Tempestade violenta"
efeitos = "Grandes danos; muito perigoso."
else:
forca = 12
descricao = "Furacão"
efeitos = "Devastação total em grandes áreas."

resultado_texto.config(text=f"Força do vento: {forca}\nDescrição: {descricao}\nEfeitos: {efeitos}")
except ValueError:
resultado_texto.config(text="Digite um número válido em km/h.")
def exportar_resultado():
if resultado_texto.cget("text"):
with open("resultado_beaufort.txt", "w") as file:
file.write(resultado_texto.cget("text"))
resultado_texto.config(text="Resultado exportado para resultado_beaufort.txt!")
else:
resultado_texto.config(text="Nada para exportar!")
def validar_entrada(valor):
return valor.replace(".", "", 1).isdigit() or valor == ""

vcmd = root.register(validar_entrada)
Velocidade_Vento_entrada.config(validate="key", validatecommand=(vcmd, "%P")) but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.65, 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.65, relwidth=0.25, relheight=0.1) but_exportar = Button(text="Exportar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=exportar_resultado)
but_exportar.place(relx=0.1, rely=0.5, 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.65, relwidth=0.25, relheight=0.1) resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15)
root.mainloop()
0