Tkinter는 파이썬으로 GUI 기반 애플리케이션을 만들고 개발하는 데 사용되는 대표적인 표준 라이브러리입니다. Tkinter가 제공하는 다양한 위젯(버튼, 캔버스, 레이블 등)을 활용하면 애플리케이션의 시각적 요소와 기능을 손쉽게 구성할 수 있습니다.
이벤트에서 위젯 이름 얻기
애플리케이션에 여러 개의 위젯이 정의되어 있을 때, 특정 이벤트가 발생한 위젯의 이름을 알아내야 하는 경우가 있습니다. 이럴 때는 함수 내부에서 event.widget 속성을 활용하면 됩니다. 예를 들어 event.widget["text"]처럼 작성하면 해당 위젯의 텍스트 값을 가져올 수 있으며, 이를 print() 함수 안에 넣어 화면에 출력할 수 있습니다.
또한 winfo_children() 메서드를 사용하면 부모 윈도우에 포함된 모든 자식 위젯의 목록을 한 번에 확인할 수 있습니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
# tkinter 프레임 또는 윈도우 인스턴스 생성
win = Tk()
# tkinter 윈도우 크기 설정
win.geometry("700x300")
# 클릭 시 자식 위젯 목록을 출력하는 함수 정의
def on_click():
print(win.winfo_children())
# 캔버스 위젯 생성
canvas = Canvas(win, width=500, height=300)
canvas.pack()
# 클릭 버튼 생성
Button(win, text="Click", command=on_click).pack()
win.mainloop()실행 결과
위 코드를 실행하면 버튼이 하나 있는 창이 화면에 나타납니다.

이 상태에서 버튼을 클릭하면, 현재 윈도우에 포함된 위젯들의 이름이 콘솔에 출력됩니다.
[<tkinter.Canvas object .!canvas>, <tkinter.Button object .!button>]
출력 결과를 보면 캔버스 위젯과 버튼 위젯이 각각 .!canvas, .!button이라는 내부 이름으로 등록되어 있는 것을 확인할 수 있습니다. 이처럼 winfo_children() 또는 event.widget을 활용하면 이벤트 처리 과정에서 어떤 위젯이 동작했는지 쉽게 파악할 수 있습니다.