
이 강의는 Tkinter GUI 강의 30강입니다
29강에서는
command와 bind
두 가지 이벤트 처리 방식의 차이를 배웠습니다.
이번 강의에서는
bind를 사용해
마우스 클릭 이벤트를 직접 처리하는 방법을 다룹니다.
이번 강의의 목표는 분명합니다.
마우스 클릭 이벤트가
언제 발생하고, 어떤 정보를 주는지 이해하는 것입니다.
마우스 클릭 이벤트란 무엇인가
마우스 클릭 이벤트는
사용자가
마우스 버튼을 누르는 순간 발생합니다.
Tkinter에서는
클릭 종류에 따라
다른 이벤트 이름을 사용합니다.
마우스 클릭 이벤트 이름 정리
자주 사용하는 마우스 이벤트는 다음과 같습니다.
- <Button-1> : 왼쪽 클릭
- <Button-2> : 가운데 클릭
- <Button-3> : 오른쪽 클릭
숫자는
마우스 버튼 번호를 의미합니다.
가장 기본적인 마우스 클릭 예제
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
def on_click(event):
print("마우스 클릭")
label = tk.Label(window, text="여기를 클릭하세요")
label.pack(pady=40)
label.bind("<Button-1>", on_click)
window.mainloop()
Label를 클릭하면
함수가 호출됩니다.
bind 함수는 event 인자를 받는다
bind로 연결된 함수는
반드시
event 인자를 받아야 합니다.
def on_click(event):
print(event)
이 event 객체 안에
클릭과 관련된 정보가 들어 있습니다.
event 객체에서 자주 쓰는 정보
def on_click(event):
print(event.x, event.y)
- event.x : 위젯 기준 x 좌표
- event.y : 위젯 기준 y 좌표
마우스 위치를
정확히 알 수 있습니다.
클릭한 위젯 확인하기
여러 위젯에
같은 이벤트 함수를 연결했을 때
어떤 위젯이 클릭됐는지
알아야 할 때가 있습니다.
def on_click(event):
print(event.widget)
event.widget에는
이벤트가 발생한
위젯 객체가 들어 있습니다.
여러 위젯에 같은 클릭 이벤트 연결하기
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
def on_click(event):
print("클릭한 텍스트:", event.widget.cget("text"))
label1 = tk.Label(window, text="라벨 1")
label2 = tk.Label(window, text="라벨 2")
label1.pack(pady=10)
label2.pack(pady=10)
label1.bind("<Button-1>", on_click)
label2.bind("<Button-1>", on_click)
window.mainloop()
하나의 함수로
여러 위젯을
처리할 수 있습니다.

클릭한 텍스트: 라벨 1
클릭한 텍스트: 라벨 2
클릭한 텍스트: 라벨 2
더블 클릭 이벤트 처리하기
마우스를
두 번 빠르게 클릭하면
더블 클릭 이벤트가 발생합니다.
label.bind("<Double-Button-1>", on_double_click)
더블 클릭 예제
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
def on_double_click(event):
print("더블 클릭")
label = tk.Label(window, text="더블 클릭하세요")
label.pack(pady=40)
label.bind("<Double-Button-1>", on_double_click)
window.mainloop()
단일 클릭과
더블 클릭은
서로 다른 이벤트입니다.

더블 클릭
마우스 클릭 이벤트는 어디에 많이 쓰일까
마우스 클릭 이벤트는
다음과 같은 경우에 자주 사용됩니다.
- Canvas 객체 선택
- 커스텀 버튼 구현
- 우클릭 메뉴 표시
- 좌표 기반 UI 처리
특히
Canvas와 함께 쓰일 때
진가를 발휘합니다.
command 대신 bind를 쓰는 이유
Button 클릭만 처리한다면
command가 더 간단합니다.
하지만
다음과 같은 경우에는
bind가 필요합니다.
- 클릭 위치가 필요할 때
- 클릭한 위젯을 구분해야 할 때
- 다양한 마우스 버튼을 처리할 때
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- <Button-1>은 왼쪽 클릭이다
- bind 함수는 event 객체를 받는다
- event.x, event.y로 클릭 위치를 알 수 있다
- event.widget으로 클릭한 위젯을 구분한다
다음 강의 예고
다음 강의에서는
키보드 입력 이벤트 처리를 다룹니다.
마우스와 키보드를
함께 다루면
UI 제어의 폭이 크게 넓어집니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 32강 이벤트 객체(event) 구조 이해하기 (0) | 2026.02.05 |
|---|---|
| [Tkinter] 31강 키보드 입력 이벤트 처리하기 (0) | 2026.02.05 |
| [Tkinter] 29강 command와 bind 이벤트 차이 이해하기 (0) | 2026.02.04 |
| [Tkinter] 28강 Combobox 선택 값 처리하기 (0) | 2026.02.03 |
| [Tkinter] 27강 Combobox(ttk) 위젯으로 드롭다운 선택 만들기 (0) | 2026.02.03 |