정보통신기술(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()