import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
# 그래프 업데이트 함수
def update_plot():
try:
# 사용자 입력값 읽기
a = float(a_entry.get())
b = float(b_entry.get())
c = float(c_entry.get())
# 로그 함수 정의
x = np.linspace(0.1, 10, 400) # x는 0보다 큰 값만
y = a * np.log(x) / np.log(b) + c
# 기존 그래프 지우기
ax.clear()
# 새로운 그래프 그리기
ax.plot(x, y, label=f'f(x) = {a} * log_{b}(x) + {c}')
ax.set_xlabel('x')
ax.set_ylabel('f(x)')
ax.set_title('로그 함수 그래프')
ax.legend()
# 그래프 새로고침
canvas.draw()
except ValueError:
error_label.config(text="유효한 숫자를 입력하세요.")
# Tkinter GUI 설정
root = tk.Tk()
root.title("로그 함수 그래프")
# 입력 필드 및 레이블
tk.Label(root, text="a (스케일링 상수):").grid(row=0, column=0)
a_entry = tk.Entry(root)
a_entry.grid(row=0, column=1)
tk.Label(root, text="b (로그 밑):").grid(row=1, column=0)
b_entry = tk.Entry(root)
b_entry.grid(row=1, column=1)
tk.Label(root, text="c (수직 이동 상수):").grid(row=2, column=0)
c_entry = tk.Entry(root)
c_entry.grid(row=2, column=1)
update_button = tk.Button(root, text="그래프 업데이트", command=update_plot)
update_button.grid(row=3, columnspan=2)
# Matplotlib Figure 및 Axes 설정
fig, ax = plt.subplots()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas_widget = canvas.get_tk_widget()
canvas_widget.grid(row=4, columnspan=2)
# 오류 메시지 레이블
error_label = tk.Label(root, text="", fg="red")
error_label.grid(row=5, columnspan=2)
root.mainloop()