Python의 Matplotlib 라이브러리는 데이터 포인트를 시각화하고 그래프나 플롯을 그려 데이터를 분석해야 하는 애플리케이션에서 매우 유용하게 활용됩니다. 이번 글에서는 이러한 Matplotlib의 기능을 응용하여, LaTeX 구문을 실시간으로 처리하고 화면에 렌더링할 수 있는 Tkinter 애플리케이션을 만드는 방법을 살펴보겠습니다.
LaTeX 구문은 수식, 과학적 표기법, 수학 기호, 특수 문자 등 과학·학술 문서를 작성할 때 널리 사용되는 조판 시스템입니다. 이런 LaTeX 뷰어 애플리케이션을 구축하려면 matplotlib 모듈과 TkAgg(Tkinter 환경에서 Matplotlib를 구동하기 위한 백엔드 API)가 반드시 필요합니다.
애플리케이션 구성 단계
- Matplotlib, Tkinter, Ttk(위젯 스타일링용), TkAgg 등 필요한 라이브러리를 임포트합니다.
- 프레임(Frame)을 추가하고, 그 안에 레이블(Label)과 입력 위젯(Entry)을 배치합니다.
- Matplotlib의 figure() 메서드로 Figure의 크기를 정의합니다. 이 Figure는 캔버스에 수식을 플롯하는 데 사용됩니다.
- TkAgg를 통해 Figure를 담을 Canvas 위젯을 생성합니다.
- Entry 위젯의 내용을 가져온 뒤, Matplotlib의 내장 함수인 text()를 사용해 텍스트를 Figure로 변환하는 함수를 정의합니다.
- Return(Enter) 키 또는 클릭 이벤트를 해당 함수에 바인딩하여, 입력 즉시 캔버스에 결과를 표시합니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# tkinter 애플리케이션의 백엔드로 TkAgg 사용
matplotlib.use('TkAgg')
# tkinter 프레임 인스턴스 생성
win = Tk()
# 창 크기 설정
win.geometry("700x350")
# 창 제목 설정
win.title("LaTex Viewer")
# Figure 출력을 생성하는 함수 정의
def graph(text):
# Entry 위젯의 입력값 가져오기
tmptext = entry.get()
tmptext = "$"+tmptext+"$"
# Figure에서 이전에 그려진 수식 지우기
wx.clear()
wx.text(0.2, 0.6, tmptext, fontsize = 20)
canvas.draw()
# Frame 객체 생성
frame = Frame(win)
frame.pack()
# Entry 위젯 생성
var = StringVar()
entry = Entry(frame, width=70, textvariable=var)
entry.pack()
# 프레임에 레이블 위젯 추가
label = Label(frame)
label.pack()
# Figure 크기를 정의하고 플롯 생성
fig = matplotlib.figure.Figure(figsize=(7, 4), dpi=100)
wx = fig.add_subplot(111)
canvas = FigureCanvasTkAgg(fig, master=label)
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)
# 캔버스 Figure의 축 숨기기
wx.get_xaxis().set_visible(False)
wx.get_yaxis().set_visible(False)
# Return 키 이벤트와 함수 바인딩
win.bind('<Return>', graph)
win.mainloop()실행 결과
위 코드를 실행하면 입력 위젯(Entry)과 Figure 플롯 영역이 함께 표시된 창이 나타납니다. 이제 입력창에 \alpha^2 + \beta^2 = \gamma^2 같은 과학·수학 표현식을 입력하고 Enter 키를 누르면, 해당 수식이 아름다운 LaTeX 형식으로 실시간으로 렌더링되어 캔버스에 출력됩니다.

핵심 포인트 정리
- TkAgg 백엔드:
matplotlib.use('TkAgg')를 호출해야 Matplotlib의 Figure를 Tkinter 위젯 안에 삽입할 수 있습니다. - $ 기호 감싸기: 입력 텍스트 앞뒤에
$를 붙여야 Matplotlib가 이를 LaTeX 수식으로 해석합니다. - 캔버스 갱신: 새 수식을 그리기 전에
wx.clear()로 이전 내용을 지우고canvas.draw()로 다시 그려야 깜빡임 없이 자연스럽게 업데이트됩니다.