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()
'정보통신기술(ICT)' 카테고리의 다른 글
배터리 충전량 소프트웨어 (0) | 2024.11.21 |
---|---|
문자를 숫자로 변환하는 파이썬 GUI 프로그램 (1) | 2024.11.20 |
초전도체에 필요한 원소(元素; element) 데이터 시뮬레이션 (0) | 2024.11.18 |
물류창고 이동식 로봇 상하좌우 (0) | 2024.11.17 |
에너지 제어 시뮬레이선 파이썬 코드 (0) | 2024.11.16 |