import tkinter as tk
from tkinter import messagebox, ttk
import matplotlib.pyplot as plt
# 데이터 리스트 초기화
time = []
input_values = []
output_values = []
# 데이터 추가 함수
def add_data():
try:
t = float(entry_time.get())
input_val = float(entry_input.get())
output_val = float(entry_output.get())
# 데이터 추가
time.append(t)
input_values.append(input_val)
output_values.append(output_val)
# 입력 필드 초기화
entry_time.delete(0, tk.END)
entry_input.delete(0, tk.END)
entry_output.delete(0, tk.END)
# 테이블에 데이터 추가
tree.insert("", tk.END, values=(t, input_val, output_val))
# 데이터가 추가되었다는 메시지 표시
messagebox.showinfo("성공", "데이터가 추가되었습니다.")
except ValueError:
messagebox.showerror("입력 오류", "숫자를 입력하세요.")
# 그래프 표시 함수
def show_graph():
if len(time) == 0:
messagebox.showwarning("데이터 없음", "입력된 데이터가 없습니다.")
return
# 그래프 그리기
plt.figure() # 새로운 Figure를 생성하여 중복 그래프를 방지
plt.plot(time, input_values, label='Input', color='b', marker='o')
plt.plot(time, output_values, label='Output', color='r', linestyle='--', marker='x')
# 그래프 제목 및 레이블 설정
plt.title('Graph of Input and Output Over Time')
plt.xlabel('Time')
plt.ylabel('Values')
# 범례 추가
plt.legend()
plt.grid(True)
# 그래프 표시
plt.show()
# 데이터 초기화 함수
def clear_data():
global time, input_values, output_values
time.clear()
input_values.clear()
output_values.clear()
tree.delete(*tree.get_children())
messagebox.showinfo("초기화", "데이터가 초기화되었습니다.")
# 메인 윈도우 설정
root = tk.Tk()
root.title("데이터 입력 및 그래프 표시")
root.geometry("400x400") # 창 크기 설정
# 입력 필드 및 레이블
label_time = tk.Label(root, text="시간:")
label_time.grid(row=0, column=0, padx=10, pady=5)
entry_time = tk.Entry(root)
entry_time.grid(row=0, column=1, padx=10, pady=5)
label_input = tk.Label(root, text="입력값:")
label_input.grid(row=1, column=0, padx=10, pady=5)
entry_input = tk.Entry(root)
entry_input.grid(row=1, column=1, padx=10, pady=5)
label_output = tk.Label(root, text="출력값:")
label_output.grid(row=2, column=0, padx=10, pady=5)
entry_output = tk.Entry(root)
entry_output.grid(row=2, column=1, padx=10, pady=5)
# 버튼 추가
button_add = tk.Button(root, text="데이터 추가", command=add_data)
button_add.grid(row=3, column=0, columnspan=2, pady=10)
button_show = tk.Button(root, text="그래프 표시", command=show_graph)
button_show.grid(row=4, column=0, columnspan=2, pady=5)
button_clear = tk.Button(root, text="데이터 초기화", command=clear_data)
button_clear.grid(row=5, column=0, columnspan=2, pady=5)
# 데이터 확인용 테이블
columns = ("시간", "입력값", "출력값")
tree = ttk.Treeview(root, columns=columns, show='headings')
tree.heading("시간", text="시간")
tree.heading("입력값", text="입력값")
tree.heading("출력값", text="출력값")
tree.grid(row=6, column=0, columnspan=2, padx=10, pady=10)
# 메인 루프 실행
root.mainloop()
'정보통신기술(ICT)' 카테고리의 다른 글
2D 라플라스 방정식을 풀기 위한 함수 (0) | 2024.10.23 |
---|---|
전자기학: 파동 방정식(Sine/Cosine 형태의 파동) (0) | 2024.10.22 |
조화진동자 함수 그래프 (0) | 2024.10.18 |
양자역학 1차원 조화진동자의 파동함수(Hermite Polynomial) (0) | 2024.10.17 |
최대값과 최소값 함수 (0) | 2024.10.15 |