람다 함수(Lambda Function)는 파이썬에서 익명 함수(Anonymous Function)라고도 불리며, Tkinter GUI 애플리케이션을 개발할 때 매우 유용하게 사용됩니다. 람다를 활용하면 콜백(callback) 함수에 여러 개의 데이터를 전달할 수 있습니다. 람다는 표현식을 처리하는 익명 함수로 어떤 함수 내부에서도 정의할 수 있으며, 특히 버튼의 command 옵션에서는 클릭 시 실행될 콜백 함수에 인자를 전달하는 용도로 자주 사용됩니다.
버튼 명령에 일반 함수 이름만 지정하면 인자를 넘길 수 없기 때문에, 람다 함수로 감싸서 원하는 값을 콜백 함수에 전달하는 방식이 일반적입니다.
예제 코드
다음 예제에서는 버튼이 여러 개 있는 간단한 윈도우 애플리케이션을 만들어 보겠습니다. 각 버튼의 command는 람다 함수로 정의되어, 클릭 시 서로 다른 문자열 값을 공통 콜백 함수인 print_text()에 전달합니다.
# 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# Tkinter 프레임 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("750x250")
# 레이블 출력용 콜백 함수
def print_text(text):
Label(win, text=text, font=('Helvetica 13 bold')).pack()
# 람다 함수를 이용해 각 버튼에 다른 값 전달
btn1 = ttk.Button(win, text="Button1", command=lambda: print_text("Button 1"))
btn1.pack(pady=10)
btn2 = ttk.Button(win, text="Button2", command=lambda: print_text("Button 2"))
btn2.pack(pady=10)
btn3 = ttk.Button(win, text="Button3", command=lambda: print_text("Button 3"))
btn3.pack(pady=10)
win.mainloop()실행 결과
위 코드를 실행하면 세 개의 버튼이 포함된 윈도우가 화면에 나타납니다. 각 버튼은 람다 함수를 통해 고유한 텍스트 메시지를 인자로 전달하며, 모든 버튼이 동일한 콜백 함수 print_text()를 공유합니다.
이제 각 버튼을 클릭해 보면, 클릭한 버튼에 해당하는 메시지가 화면에 표시되는 것을 확인할 수 있습니다. 이처럼 람다 함수를 사용하면 하나의 콜백 함수를 재사용하면서도 버튼마다 다른 동작을 손쉽게 구현할 수 있습니다.