
이 강의는 Tkinter GUI 강의 32강입니다
31강에서는
키보드 입력 이벤트를 처리하면서
event.keysym, event.char를 사용해 보았습니다.
이번 강의에서는
지금까지 자연스럽게 써 왔던
이벤트 객체(event)가 무엇인지
구조적으로 정리합니다.
이번 강의의 목표는 분명합니다.
event 객체 안에
어떤 정보들이 들어 있고, 언제 무엇을 쓰는지
명확히 이해하는 것입니다.
event 객체는 언제 만들어질까
event 객체는
사용자가 어떤 행동을 했을 때
Tkinter가 자동으로 생성해서 전달해 줍니다.
마우스를 클릭하거나
키를 누르거나
위젯을 선택하는 순간마다
event 객체 하나가 만들어집니다.
event 객체는 bind에서만 사용된다
중요한 점 하나입니다.
event 객체는
bind 방식에서만 사용됩니다.
widget.bind("<Event>", 함수)
이때
함수는 반드시
event 인자를 받아야 합니다.
event 객체 기본 확인 예제
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
def show_event(event):
print(event)
window.bind("<Button-1>", show_event)
window.mainloop()
마우스를 클릭하면
event 객체가 출력됩니다.
<ButtonPress event state=Mod1 num=1 x=153 y=94>
event 객체에 들어 있는 정보들
event 객체에는
이벤트와 관련된
다양한 정보가 들어 있습니다.
자주 사용하는 정보는 다음과 같습니다.
- event.type
- event.widget
- event.x, event.y
- event.keysym, event.char
이제
하나씩 살펴보겠습니다.
event.type 이해하기
event.type은
이벤트의 종류를 나타냅니다.
def show_type(event):
print(event.type)
예를 들어
마우스 클릭, 키 입력 등
이벤트 종류에 따라
값이 달라집니다.
event.widget 이해하기
event.widget은
이벤트가 발생한 위젯입니다.
def show_widget(event):
print(event.widget)
여러 위젯에
같은 이벤트 함수를 연결했을 때
어떤 위젯에서 발생했는지
구분할 수 있습니다.
event.x, event.y 좌표 정보
마우스 이벤트에서는
좌표 정보가 매우 중요합니다.
def show_position(event):
print(event.x, event.y)
- event.x, event.y : 위젯 기준 좌표
- event.x_root, event.y_root : 화면 기준 좌표
Canvas나
커스텀 UI에서
자주 사용됩니다.
키보드 이벤트에서의 event 정보
키보드 이벤트에서는
다음 정보가 자주 사용됩니다.
def show_key(event):
print(event.keysym, event.char)
- event.keysym : 키 이름
- event.char : 실제 입력 문자
특수 키는
char 값이 비어 있을 수 있습니다.
하나의 함수로 여러 이벤트 처리하기
event 객체를 사용하면
하나의 함수로
여러 이벤트를 처리할 수 있습니다.
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
def handle_event(event):
print(event.type, event.widget)
window.bind("<Button-1>", handle_event)
window.bind("<Key>", handle_event)
window.mainloop()
event.type을 기준으로
분기 처리도 가능합니다.
event 객체를 조건문으로 분기하기
def handle_event(event):
if event.type == "4":
print("마우스 이벤트")
else:
print("기타 이벤트")
이런 방식은
고급 이벤트 처리에서
자주 사용됩니다.
event 객체를 꼭 써야 하는 경우
다음과 같은 상황에서는
event 객체가 필수입니다.
- 클릭 위치가 필요할 때
- 어떤 위젯이 눌렸는지 알아야 할 때
- 키 종류를 구분해야 할 때
- 하나의 함수로 이벤트를 통합 처리할 때
이런 경우에는
command 방식으로는
처리가 불가능합니다.
event 객체를 너무 남용하지 말자
event 객체는
아주 강력하지만
항상 필요한 것은 아닙니다.
단순 버튼 클릭처럼
이벤트 정보가 필요 없는 경우에는
command를 사용하는 것이
코드를 더 단순하게 만듭니다.
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- event 객체는 bind에서만 사용된다
- 이벤트 발생 시 Tkinter가 자동으로 전달한다
- widget, 좌표, 키 정보 등을 포함한다
- 고급 이벤트 처리의 핵심이다
다음 강의 예고
다음 강의에서는
엔터 키로 버튼 동작시키기를 다룹니다.
지금까지 배운
키보드 이벤트와
command 개념이
하나로 합쳐집니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 34강 더블 클릭 이벤트 처리하기 (0) | 2026.02.06 |
|---|---|
| [Tkinter] 33강 엔터 키로 버튼 동작 시키기 (0) | 2026.02.06 |
| [Tkinter] 31강 키보드 입력 이벤트 처리하기 (0) | 2026.02.05 |
| [Tkinter] 30강 마우스 클릭 이벤트 처리하기 (0) | 2026.02.04 |
| [Tkinter] 29강 command와 bind 이벤트 차이 이해하기 (0) | 2026.02.04 |