이벤트(Event)는 규모가 큰 애플리케이션에서 여러 작업을 수행하고 관리하는 데 매우 유용하게 활용됩니다. 파이썬 Tkinter에서는 bind('handler', 'callback') 메서드를 사용하여 특정 이벤트를 키보드나 마우스 버튼에 연결(바인딩)할 수 있습니다. 일반적으로 마우스 포인터의 위치와 움직임은 스크린세이버 제작이나 2D·3D 게임 개발 시 주로 추적됩니다.
포인터의 좌표를 출력하려면 <Motion> 이벤트를 콜백 함수에 바인딩한 뒤, 콜백 함수 안에서 x와 y 변수를 통해 포인터의 현재 위치를 받아오면 됩니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("750x250")
def callback(e):
x = e.x
y = e.y
print("Pointer is currently at %d, %d" % (x, y))
# 마우스 이동 이벤트를 콜백 함수에 바인딩
win.bind('<Motion>', callback)
win.mainloop()코드 설명
- callback(e) : 마우스가 움직일 때마다 호출되는 함수입니다. 이벤트 객체
e의x,y속성으로 포인터의 좌표를 얻습니다. - bind('<Motion>', callback) : 마우스 이동 이벤트를 콜백 함수와 연결합니다.
e.x,e.y는 윈도우(위젯) 기준의 상대 좌표이며, 화면 전체 기준의 절대 좌표가 필요하다면e.x_root,e.y_root를 사용하면 됩니다.
실행 결과
위 코드를 실행한 후 윈도우 위에서 마우스를 움직이면, 포인터의 실제 위치가 실시간으로 출력됩니다.

화면 위에서 마우스를 이동시키면 콘솔에서 다음과 같이 포인터의 실제 좌표를 확인할 수 있습니다.
Pointer is currently at 452, 225 Pointer is currently at 426, 200 Pointer is currently at 409, 187 Pointer is currently at 392, 174 Pointer is currently at 382, 168 Pointer is currently at 378, 163 Pointer is currently at 376, 159 Pointer is currently at 369, 150 Pointer is currently at 366, 141 Pointer is currently at 362, 130