Tkinter 애플리케이션에서 왼쪽 마우스 버튼을 누른 상태로 드래그할 때 발생하는 이벤트를 처리하려면 <B1-Motion> 이벤트를 활용하면 됩니다. 여기에 <ButtonRelease-1> 이벤트를 함께 바인딩하면 버튼을 놓는 순간까지 감지할 수 있어, 드래그 앤 드롭이나 그리기 기능 등을 구현할 때 매우 유용합니다.
구현 단계
tkinter 프레임의 인스턴스를 생성합니다.
win.geometry 메서드를 사용해 프레임(윈도우)의 크기를 설정합니다.
마우스가 왼쪽 버튼을 누른 채로 움직일 때 문장을 출력하는 이벤트 핸들러 "handler1"을 정의합니다.
마우스 버튼이 해제될 때 문장을 출력하는 또 다른 이벤트 핸들러 "handler2"를 정의합니다.
bind 메서드를 사용해 <B1-Motion> 이벤트를 handler1에 바인딩합니다.
bind 메서드를 다시 사용해 <ButtonRelease-1> 이벤트를 handler2에 바인딩합니다.
마지막으로 애플리케이션 윈도우의 mainloop를 실행합니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
# tkinter 프레임 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("750x250")
# 이벤트 핸들러 함수 정의
def handler1(e):
print("왼쪽 버튼을 누른 상태로 마우스를 움직이고 있습니다.")
def handler2(e):
print("버튼이 해제되었습니다")
# 메인 윈도우에 라벨 정의
Label(win, text="왼쪽 버튼을 누른 채로 마우스를 움직여 보세요", font='Helvetica 15 underline').pack(pady=30)
# 마우스 이벤트를 핸들러에 바인딩
win.bind('<B1-Motion>', handler1)
win.bind('<ButtonRelease-1>', handler2)
win.mainloop()실행 결과
위 코드를 실행하면 다음과 같은 화면이 나타납니다.

이제 왼쪽 버튼을 누른 상태로 마우스를 움직이면 콘솔에 아래와 같은 출력이 계속 표시됩니다.
왼쪽 버튼을 누른 상태로 마우스를 움직이고 있습니다. 왼쪽 버튼을 누른 상태로 마우스를 움직이고 있습니다. 왼쪽 버튼을 누른 상태로 마우스를 움직이고 있습니다. 왼쪽 버튼을 누른 상태로 마우스를 움직이고 있습니다. 왼쪽 버튼을 누른 상태로 마우스를 움직이고 있습니다.
마우스의 왼쪽 버튼을 놓으면 다음과 같은 메시지가 출력됩니다.
버튼이 해제되었습니다
추가 팁
<B1-Motion>에서 숫자 1은 왼쪽 버튼을 의미합니다. 같은 방식으로 가운데 버튼은 <B2-Motion>, 오른쪽 버튼은 <B3-Motion>을 사용하면 됩니다. 또한 버튼을 누르는 순간 자체를 감지하고 싶다면 <Button-1> 이벤트를 바인딩하면 되며, 이를 조합하면 클릭 시작 → 드래그 → 해제까지 전체 마우스 동작 흐름을 완벽하게 제어할 수 있습니다.