Tkinter는 파이썬으로 GUI 프로그램을 만들 때 매우 유용하게 활용되는 표준 라이브러리입니다. 버튼의 글꼴, 크기, 색상 등 다양한 요소를 자유롭게 꾸밀 수 있으며, 스타일을 적용하는 방법도 여러 가지로 제공됩니다. 이번 글에서는 캔버스 위의 특정 버튼에만 스타일을 적용하는 방법과, 모든 버튼에 일괄적으로 스타일을 적용하는 방법을 예제 코드와 함께 살펴보겠습니다.
특정 버튼에만 스타일 적용하기
먼저 캔버스에 두 개의 버튼이 있고, 그중 첫 번째 버튼에만 스타일을 적용하고 싶은 경우를 생각해 보겠습니다. 이때는 W.TButton이라는 사용자 정의 스타일 이름을 설정 객체에 지정하고, 여기에 글꼴(font)과 전경색(foreground)을 함께 구성하면 됩니다. 이렇게 만든 스타일 이름은 해당 버튼의 style 옵션에만 전달되므로, 다른 버튼에는 영향을 주지 않습니다.
예제 코드
from tkinter import *
from tkinter.ttk import *
# 캔버스(윈도우) 설정
canv = Tk()
canv.geometry('200x150')
# 스타일 객체 생성
sto = Style()
# 스타일 구성: Arial 10pt 밑줄 + 초록색 글자
sto.configure('W.TButton', font=('Arial', 10, 'underline'),
foreground='Green')
# 스타일이 적용된 버튼
btns = Button(canv, text='Welcome !',
style='W.TButton',
command=canv.destroy)
btns.grid(row=0, column=1, padx=50)
# 스타일이 적용되지 않은 버튼
btnns = Button(canv, text='Click to Start !', command=None)
btnns.grid(row=1, column=1, pady=10, padx=50)
canv.mainloop()실행 결과
위 코드를 실행하면 첫 번째 버튼에만 밑줄이 있는 초록색 글씨가 적용되고, 두 번째 버튼은 기본 스타일 그대로 표시되는 것을 확인할 수 있습니다.

모든 버튼에 스타일 적용하기
특정 버튼이 아니라 캔버스 위의 모든 버튼에 동일한 스타일을 적용하고 싶다면 방법이 더욱 간단합니다. 스타일 이름을 TButton으로 지정하기만 하면 됩니다. TButton은 ttk에서 기본적으로 제공하는 버튼 스타일 클래스이므로, 이를 재구성(configure)하면 별도의 style 옵션 지정 없이도 캔버스의 모든 버튼에 자동으로 스타일이 반영됩니다.
예제 코드
from tkinter import *
from tkinter.ttk import *
canv = Tk()
canv.geometry('200x150')
# 스타일 객체 생성
sto = Style()
# 스타일 구성: Calibri 10pt 굵게 + 밑줄 + 초록색 글자
sto.configure('TButton', font=
('calibri', 10, 'bold', 'underline'),
foreground='Green')
# 버튼 1
btns = Button(canv, text='Welcome !',
style='TButton',
command=canv.destroy)
btns.grid(row=0, column=1, padx=50)
# 버튼 2
btnns = Button(canv, text='Click to start !', command=None)
btnns.grid(row=1, column=1, pady=10, padx=50)
canv.mainloop()실행 결과
위 코드를 실행하면 style 옵션을 명시하지 않은 두 번째 버튼까지 포함해, 화면의 모든 버튼에 동일한 글꼴과 색상이 적용된 결과를 확인할 수 있습니다.

마무리
정리하면, Tkinter에서 버튼 스타일링은 ttk.Style 객체를 활용하는 것이 핵심입니다. 고유한 스타일 이름(예: W.TButton)을 만들어 특정 버튼에만 적용할 수도 있고, 기본 스타일인 TButton을 재구성하여 모든 버튼에 한 번에 적용할 수도 있습니다. 이 두 가지 방식을 상황에 맞게 활용하면 GUI 애플리케이션의 디자인을 훨씬 더 깔끔하고 일관성 있게 관리할 수 있습니다.