import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
# Van der Waals 힘을 계산하는 함수 정의
def van_der_waals_force(distance, a=1.0, b=0.5):
# 간단한 반데르발스 힘 모델로 r^6 관계를 기반으로 계산
return -a / (distance**6) + b / (distance**12)
# 그래프를 업데이트하는 함수 정의
def update_graph():
try:
input_value = float(entry.get())
if input_value <= 0:
result_label.config(text="양수의 거리를 입력해주세요.")
return
distances = np.linspace(0.5, input_value, 100)
forces = van_der_waals_force(distances)
ax.clear()
ax.plot(distances, forces, label="Van der Waals Force")
ax.set_xlabel("Distance")
ax.set_ylabel("Force")
ax.set_title("Van der Waals Heterostructure Force Graph")
ax.legend()
canvas.draw()
result_label.config(text="그래프가 업데이트되었습니다.")
except ValueError:
result_label.config(text="숫자를 올바르게 입력해주세요.")
# Tkinter 윈도우 생성
root = tk.Tk()
root.title("Van der Waals Heterostructure Visualizer")
# 입력창과 버튼 생성
frame = ttk.Frame(root, padding="10")
frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
label = ttk.Label(frame, text="거리 범위 입력 (예: 10):")
label.grid(row=0, column=0, sticky=tk.W)
entry = ttk.Entry(frame)
entry.grid(row=0, column=1, sticky=(tk.W, tk.E))
button = ttk.Button(frame, text="그래프 업데이트", command=update_graph)
button.grid(row=0, column=2, sticky=tk.W)
result_label = ttk.Label(frame, text="")
result_label.grid(row=1, column=0, columnspan=3)
# Matplotlib 그래프 설정
fig, ax = plt.subplots()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
# 윈도우 크기 설정
root.columnconfigure(0, weight=1)
root.rowconfigure(1, weight=1)
frame.columnconfigure(1, weight=1)
# GUI 루프 시작
root.mainloop()
https://www.tistory.com/event/write-challenge-2024
'정보통신기술(ICT)' 카테고리의 다른 글
초연공학(Conscious Engineering) (0) | 2024.11.10 |
---|---|
초전도체 연구에 필요한 양자물리학 기반 뉴트론시스 방정식(Neutronsys Equation) (3) | 2024.11.07 |
양자역학: 터널링 효과(Quantum Tunneling Effect) (4) | 2024.11.05 |
상미분 방정식: 로렌츠 방정식(Lorenz Equations) (3) | 2024.11.04 |
양자역학: 입자상자 문제(Particle in a Box) (3) | 2024.11.01 |