Tkinter의 font 속성은 위젯의 기본 글꼴을 커스터마이징할 때 가장 유용하게 활용되는 속성 중 하나입니다. 지금까지 다양한 글꼴을 위젯에 적용해 보았지만, 어떤 글꼴이 Tkinter 라이브러리에서 실제로 사용 가능한지 한눈에 파악하기란 쉽지 않습니다. Python Tkinter는 글꼴 선택에 있어 다소 까다로운 편이기 때문에, 시스템에 설치된 모든 글꼴 목록을 화면에 표시해 주는 애플리케이션을 직접 만들어 보면 큰 도움이 됩니다.
font 모듈 임포트하기
글꼴 관련 기능을 사용하려면 먼저 다음과 같이 font 라이브러리를 환경에 임포트해야 합니다.
from tkinter import font
구현 단계
글꼴 목록 애플리케이션을 만들기 위해서는 다음 단계를 따르면 됩니다.
함수를 정의하고 font.families() 생성자를 사용하여 시스템의 글꼴 패밀리 인스턴스를 생성합니다.
모든 글꼴을 순회하면서 Label 위젯에 각 글꼴 이름을 텍스트로 할당하고, 해당 글꼴 자체로 표시되도록 합니다.
세로 스크롤바가 있는 캔버스(Canvas)를 생성합니다.
캔버스 내부에 프레임(Frame)을 만들어 그 안에 전체 글꼴 목록을 배치합니다.
프레임에서 스크롤 기능이 동작하도록 마우스 이벤트를 스크롤 위젯에 바인딩합니다.
예제 코드
#필요한 라이브러리 임포트
from tkinter import *
from tkinter import font
#tkinter 프레임 인스턴스 생성
win = Tk()
win.geometry("750x350")
win.title('Font List')
#font-family 생성자를 사용하여 글꼴 리스트 생성
fonts=list(font.families())
fonts.sort()
def fill_frame(frame):
for f in fonts:
#각 글꼴을 표시할 라벨 생성
label = Label(frame,text=f,font=(f, 14)).pack()
def onFrameConfigure(canvas):
canvas.configure(scrollregion=canvas.bbox("all"))
#캔버스 생성
canvas = Canvas(win,bd=1, background="white")
#캔버스 내부에 프레임 생성
frame = Frame(canvas, background="white")
#스크롤바 추가
scroll_y = Scrollbar(win, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=scroll_y.set)
scroll_y.pack(side="right", fill="y")
canvas.pack(side="left", expand=1, fill="both")
canvas.create_window((5,4), window=frame, anchor="n")
frame.bind("", lambda e, canvas=canvas: onFrameConfigure(canvas))
fill_frame(frame)
win.mainloop() 실행 결과
위 코드를 실행하면 Tkinter가 지원하는 사용 가능한 글꼴 목록이 담긴 창이 표시됩니다. 각 항목은 해당 글꼴이 실제 적용된 형태로 출력되기 때문에, 원하는 글꼴의 실제 모양을 미리 확인할 수 있다는 점이 큰 장점입니다.

정리
font.families() 함수와 Canvas, Scrollbar 위젯을 조합하면 시스템에 설치된 모든 글꼴을 한 번에 탐색할 수 있는 간단한 도구를 손쉽게 구현할 수 있습니다. GUI 프로젝트에서 디자인에 맞는 글꼴을 고를 때 이 방법을 활용해 보시기 바랍니다.