import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
import matplotlib as mpl
# 한글 폰트 설정 (맑은 고딕 사용)
mpl.rcParams['font.family'] = 'Malgun Gothic'
mpl.rcParams['axes.unicode_minus'] = False # 음수 기호 표시 문제 해결
# 에너지 제어 알고리즘 (간단한 부하 분산 예제)
def energy_control(input_value):
# 에너지 흐름 시뮬레이션 (단순화)
grid_capacity = 100 # 그리드 최대 용량 (단위: MW)
energy_usage = np.linspace(0, grid_capacity, 100)
control_output = np.clip(grid_capacity - (energy_usage * input_value / 100), 0, grid_capacity)
return energy_usage, control_output
# GUI 생성
class EnergyControlApp:
def __init__(self, root):
self.root = root
self.root.title("에너지 제어 장치 시뮬레이션")
# 입력 필드
self.label = ttk.Label(root, text="부하 증가율 (%):")
self.label.grid(row=0, column=0, padx=10, pady=10)
self.input_field = ttk.Entry(root, width=10)
self.input_field.grid(row=0, column=1, padx=10, pady=10)
self.input_field.insert(0, "50") # 기본값 설정
# 버튼
self.plot_button = ttk.Button(root, text="그래프 표시", command=self.plot_graph)
self.plot_button.grid(row=0, column=2, padx=10, pady=10)
# 그래프 출력 영역
self.figure = plt.Figure(figsize=(6, 4), dpi=100)
self.ax = self.figure.add_subplot(111)
self.canvas = FigureCanvasTkAgg(self.figure, root)
self.canvas.get_tk_widget().grid(row=1, column=0, columnspan=3, padx=10, pady=10)
def plot_graph(self):
# 입력값 확인
try:
input_value = float(self.input_field.get())
except ValueError:
self.label.config(text="유효한 숫자를 입력하세요!")
return
# 에너지 제어 데이터 생성
energy_usage, control_output = energy_control(input_value)
# 그래프 그리기
self.ax.clear()
self.ax.plot(energy_usage, control_output, label="에너지 잔여 용량", color="blue")
self.ax.set_title("에너지 제어 시뮬레이션", fontsize=14, fontweight='bold')
self.ax.set_xlabel("에너지 사용량 (MW)", fontsize=12)
self.ax.set_ylabel("잔여 용량 (MW)", fontsize=12)
self.ax.legend(loc="upper right", fontsize=10, title="설명")
self.ax.grid()
self.canvas.draw()
# 애플리케이션 실행
if __name__ == "__main__":
root = tk.Tk()
app = EnergyControlApp(root)
root.mainloop()
'정보통신기술(ICT)' 카테고리의 다른 글
초전도체에 필요한 원소(元素; element) 데이터 시뮬레이션 (0) | 2024.11.18 |
---|---|
물류창고 이동식 로봇 상하좌우 (0) | 2024.11.17 |
로보틱 플라스틱 분류 알고리즘 (1) | 2024.11.15 |
한국어-영어 맞춤법 기초 검사기 (2) | 2024.11.14 |
파이썬 코드로 한국이 가진 오방색을 나타내는 방식 (0) | 2024.11.13 |