버튼은 사용자 상호작용이 필요한 다양한 애플리케이션에서 매우 유용하게 활용됩니다. 그렇다면 실행 중인 애플리케이션에서 어떤 버튼이 클릭되었는지 어떻게 알 수 있을까요?
가장 간단한 방법은 버튼 설정 시 콜백 함수(callback function)를 지정하는 것입니다. 각 버튼의 command 옵션에 서로 다른 인자를 전달하도록 람다(lambda) 함수를 구성하고, 콜백 함수 내부에서 print()를 호출하면 클릭된 버튼의 정보를 손쉽게 확인할 수 있습니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# Tkinter 프레임 인스턴스 생성
win = Tk()
# 창 크기 설정
win.geometry("700x250")
# 클릭된 버튼 정보를 출력하는 함수 정의
def get_button(t):
print(t)
# 버튼 객체 생성
b1 = ttk.Button(win, text="Button-1", command=lambda t="Button-1 Clicked": get_button(t))
b1.place(relx=.46, rely=.5, anchor=CENTER)
b2 = ttk.Button(win, text="Button-2", command=lambda t="Button-2 Clicked": get_button(t))
b2.place(relx=.58, rely=.5, anchor=CENTER)
win.mainloop()코드 설명
위 코드의 핵심은 command 옵션에 전달되는 람다 함수입니다. lambda t="Button-1 Clicked": get_button(t) 형태로 기본값 인자를 활용하면, 각 버튼이 자신만의 고유한 메시지를 콜백 함수에 전달할 수 있습니다. 만약 람다 없이 command=get_button("...")처럼 작성하면 프로그램 실행 즉시 함수가 호출되어 버려지므로 주의해야 합니다.
실행 결과
위 코드를 실행하면 두 개의 버튼이 배치된 창이 나타납니다.

여기서 "Button-1"을 클릭하면 콘솔에 아래와 같은 결과가 출력됩니다.
Button-1 Clicked
마찬가지로 "Button-2"를 클릭하면 Button-2 Clicked라는 메시지가 출력되어, 어떤 버튼이 눌렸는지 명확하게 구분할 수 있습니다.
마무리
이처럼 콜백 함수와 람다 표현식을 조합하면 여러 버튼을 하나의 핸들러로 처리하면서도 각각의 이벤트를 정확히 식별할 수 있습니다. 이 방식은 메뉴 선택, 계산기 키패드 등 버튼이 많은 GUI 애플리케이션을 개발할 때 특히 유용하게 활용됩니다.