Tkinter로 애플리케이션을 개발하다 보면 사용자가 화면의 버튼을 클릭하는 것과 같은 상호작용을 처리해야 할 때가 많습니다. 이벤트가 어떻게 동작하는지 제대로 이해하려면 콜백 함수(callback)와 이를 실행할 트리거(trigger)를 함께 구성해야 합니다. 사용자가 버튼을 클릭하면 이벤트가 발생하고, 프로그램은 이를 감지해 화면에 결과를 반영해야 합니다.
예제 소개
이번 예제에서는 여러 항목을 담은 Listbox(리스트박스) 위젯을 만들어 보겠습니다. 사용자가 목록에서 항목을 선택하면 해당 클릭 이벤트가 캡처되며, 캡처된 내용은 print() 함수를 통해 콘솔에 출력해 확인할 수 있습니다.
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# tkinter 프레임 또는 윈도우 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
# Listbox 위젯 생성
lb = Listbox(win)
lb.pack(expand=True, fill=BOTH)
# 선택된 항목을 처리하는 함수 정의
def save():
for item in lb.curselection():
print("You have selected " + str(item + 1))
# Listbox에 항목 추가
lb.insert("end", "item1", "item2", "item3", "item4", "item5")
# 항목을 저장하는 버튼 추가
ttk.Button(win, text="Save", command=save).pack()
win.mainloop()
코드 설명
- lb.curselection() : 현재 선택된 항목의 인덱스를 튜플 형태로 반환합니다. 인덱스는 0부터 시작하므로, 출력 시 1을 더해 실제 항목 번호를 보여 줍니다.
- command=save : 버튼이 클릭될 때 save 함수가 호출되도록 연결하는 콜백 등록입니다.
- bind() 활용 : 버튼 없이 더블클릭으로 바로 처리하고 싶다면
lb.bind("<Double-Button-1>", ...)처럼 이벤트를 위젯에 직접 바인딩하는 방법도 있습니다.
실행 결과
위 코드를 실행하면 항목 목록이 표시된 창이 나타납니다. "Save" 버튼을 클릭하면 어떤 이벤트가 캡처되었는지 확인할 수 있습니다.

이제 목록에서 항목을 하나 선택한 뒤 "Save" 버튼을 누르면, 콘솔에 선택한 항목 번호가 출력됩니다.
You have selected 3