from tkinter import *
# Função para classificar a magnitude
def app(event=None): # Permite que a função seja chamada pelo evento de pressionamento de tecla
try:
magnitude = float(Magnitude.get()) # Obtém a entrada e converte para float
if magnitude < 0:
Classificação_resultado.config(text="Inválido")
Descrição_resultado.config(text="Magnitude não\n pode ser negativa.")
elif magnitude < 3.0:
Classificação_resultado.config(text="Micro")
Descrição_resultado.config(text="Geralmente não\n é sentido\n pela população.")
elif magnitude < 4.0:
Classificação_resultado.config(text="Muito pequeno")
Descrição_resultado.config(text="Pode ser percebido,\n mas não causa danos.")
elif magnitude < 5.0:
Classificação_resultado.config(text="Pequeno")
Descrição_resultado.config(text="Sentido, com\n raros danos em\n estruturas frágeis.")
elif magnitude < 6.0:
Classificação_resultado.config(text="Moderado")
Descrição_resultado.config(text="Pode causar danos\nleves em\n construções fracas.")
elif magnitude < 7.0:
Classificação_resultado.config(text="Forte")
Descrição_resultado.config(text="Pode\n causar danos\n consideráveis em\n áreas habitadas.")
elif magnitude < 8.0:
Classificação_resultado.config(text="Grande")
Descrição_resultado.config(text="Pode causar destruição severa.")
elif magnitude < 9.0:
Classificação_resultado.config(text="Muito grande")
Descrição_resultado.config(text="Danos catastróficos\n em grandes áreas.")
else:
Classificação_resultado.config(text="Extremamente grande")
Descrição_resultado.config(text="Destruição massiva;\n raramente ocorre.")
except ValueError:
# Caso a entrada não seja um número válido
Classificação_resultado.config(text="Inválido")
Descrição_resultado.config(text="Por favor,\n insira um valor\n numérico válido.")
# Função para limpar a entrada e os resultados
def limpar():
Magnitude_entrada.delete(0, END)
Classificação_resultado.config(text="")
Descrição_resultado.config(text="")
# Criação da interface principal
root = Tk()
root.geometry("600x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Classificar Sismo Pela Magnitude")
# Título
titulo = Label(text="Classificar Sismo",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.2, rely=0.05)
# Entrada de magnitude
texto_sub1 = Label(text="Magnitude escala Richter :",
font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.2)
Magnitude = StringVar()
Magnitude_entrada = Entry(textvariable=Magnitude,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Magnitude_entrada.place(relx=0.6, rely=0.21, relwidth=0.3)
# Associar a tecla Enter para ativar a função app
Magnitude_entrada.bind("<Return>", app)
# Botões
but1 = Button(text="Classificar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.33, 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.33, 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.33, relwidth=0.25, relheight=0.1)
# Resultados
Classificação = Label(text="Classificação:",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
Classificação.place(relx=0.08, rely=0.47, relwidth=0.28, relheight=0.15)
Classificação_resultado = Label(text="",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3", justify='center')
Classificação_resultado.place(relx=0.38, rely=0.48, relwidth=0.5, relheight=0.1)
Descrição = Label(text="Descrição:",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
Descrição.place(relx=0.08, rely=0.7, relwidth=0.28, relheight=0.15)
# Ajuste a largura para permitir que o texto seja quebrado e alinhado corretamente
# Aumentei o wraplength para 500 para dar mais espaço para o texto
Descrição_resultado = Label(text="",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3", justify='left', wraplength=500)
Descrição_resultado.place(relx=0.38, rely=0.71, relwidth=0.5, relheight=0.25)
root.mainloop()