정보통신기술(ICT)

지진 강도 측정 소프트웨어

해머슴 2024. 11. 19. 10:29
import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

def plot_graph():
    try:
        # 입력값 가져오기
        magnitude = float(entry.get())
        # 지진 강도 데이터 예시
        magnitudes = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        energy_released = [10**(1.5*magnitude + 4.8) for magnitude in magnitudes]
       
        # 그래프 그리기
        fig, ax = plt.subplots(figsize=(6, 4))
        ax.plot(magnitudes, energy_released, marker='o', linestyle='-')
        ax.set_title("Earthquake Magnitude vs Energy Released")
        ax.set_xlabel("Magnitude")
        ax.set_ylabel("Energy Released (Joules)")
        ax.grid(True)

        # 기존 그래프 제거
        for widget in graph_frame.winfo_children():
            widget.destroy()

        # 새 그래프 삽입
        canvas = FigureCanvasTkAgg(fig, master=graph_frame)
        canvas_widget = canvas.get_tk_widget()
        canvas_widget.pack()
        canvas.draw()
    except ValueError:
        error_label.config(text="숫자를 입력해주세요!")

# GUI 초기화
root = tk.Tk()
root.title("지진 강도 그래프")

# 입력 필드와 버튼
frame = ttk.Frame(root, padding="10")
frame.pack()

label = ttk.Label(frame, text="지진 강도 입력:")
label.grid(row=0, column=0, padx=5, pady=5)

entry = ttk.Entry(frame, width=10)
entry.grid(row=0, column=1, padx=5, pady=5)

plot_button = ttk.Button(frame, text="그래프 출력", command=plot_graph)
plot_button.grid(row=0, column=2, padx=5, pady=5)

error_label = ttk.Label(frame, text="", foreground="red")
error_label.grid(row=1, columnspan=3)

# 그래프 표시 프레임
graph_frame = ttk.Frame(root, padding="10")
graph_frame.pack()

# 프로그램 실행
root.mainloop()