Tkinter의 ttk 테마 위젯(themed widget)은 애플리케이션 내 위젯의 외형과 스타일을 손쉽게 디자인할 수 있도록 도와주는 기능입니다. ttk는 Tcl/Tk 인터프리터를 기반으로 동작하며, 다양한 내장 속성과 기능을 통해 위젯 및 애플리케이션 인터페이스에 접근할 수 있게 해줍니다.
Ttk 테마를 Tcl 테마와 비교하면 상당한 차이가 있는데, Ttk는 아래와 같이 몇 가지 테마만 지원합니다.
- winnative
- clam
- alt
- default
- classic
- vista
- xpnative
Tkinter 애플리케이션의 전체 테마를 변경하려면 style.theme_use(theme_name) 함수를 사용하면 됩니다. 이 함수에 원하는 테마 이름을 전달하면 애플리케이션 전체의 외관이 해당 테마로 적용됩니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
# Tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
# ttk Style 인스턴스 생성
style = ttk.Style()
# 스타일을 이용해 테마 구성
style.theme_use('clam')
# 메시지를 표시하는 함수 정의
def display_msg():
messagebox.showinfo("Message", "You are learning Python Tkinter!")
# 커스터마이징된 Label 위젯 추가
label = ttk.Label(win, text="Hey Folks, I have a Message for You!", font=('Aerial 16'))
label.pack(pady=5)
# Button 위젯 추가
ttk.Button(win, text="Show Message", command=display_msg).place(x=285, y=98)
win.mainloop()실행 결과
위 코드를 실행하면 레이블(Label) 위젯과 버튼(Button)이 배치된 창이 열립니다. 애플리케이션의 전체적인 테마는 ttk 테마 위젯에 의해 결정되며, Tkinter 라이브러리에서 제공하는 사용 가능한 테마 목록 중 원하는 테마를 선택하여 자유롭게 구성할 수 있습니다.
위 예제에서는 'clam' 테마를 적용했지만, 'vista', 'alt', 'classic' 등 다른 테마로 변경하면 버튼과 레이블의 모양이 즉시 달라지는 것을 확인할 수 있습니다. 운영체제별로 지원되는 테마가 다를 수 있으므로, style.theme_names() 메서드를 활용하면 현재 시스템에서 사용 가능한 테마 목록을 쉽게 조회할 수 있습니다.