마우스로 그림 그리기 프로그램
이번 시간에는 파이썬으로 간단한 그림판 프로그램을 만들어 보겠습니다.
마우스를 누른 상태로 움직이면 선이 그려지고, 버튼을 누르면 그림을 지울 수 있습니다.
1. 그림판 프로그램 전체 코드
import tkinter as tk
# 마우스를 누른 상태인지 확인하는 변수
drawing = False
# 이전 마우스 위치 저장
last_x = 0
last_y = 0
# 마우스를 눌렀을 때 실행되는 함수
def start_draw(event):
global drawing, last_x, last_y
drawing = True
last_x = event.x
last_y = event.y
# 마우스를 움직일 때 실행되는 함수
def draw(event):
global last_x, last_y
if drawing:
canvas.create_line(
last_x, last_y,
event.x, event.y,
fill="black",
width=3
)
last_x = event.x
last_y = event.y
# 마우스를 뗐을 때 실행되는 함수
def stop_draw(event):
global drawing
drawing = False
# 그림판 지우기 함수
def clear_canvas():
canvas.delete("all")
# tkinter 창 만들기
window = tk.Tk()
window.title("파이썬 그림판")
window.geometry("600x500")
# 안내 문구
label = tk.Label(window, text="마우스를 누르고 움직이면 그림을 그릴 수 있어요!")
label.pack(pady=10)
# 그림을 그릴 캔버스 만들기
canvas = tk.Canvas(window, width=560, height=380, bg="white")
canvas.pack()
# 마우스 이벤트 연결
canvas.bind("<ButtonPress-1>", start_draw)
canvas.bind("<B1-Motion>", draw)
canvas.bind("<ButtonRelease-1>", stop_draw)
# 지우기 버튼
clear_button = tk.Button(window, text="전체 지우기", command=clear_canvas)
clear_button.pack(pady=10)
# 창 실행
window.mainloop()
2. 실행 결과
프로그램을 실행하면 하얀색 그림판 창이 나타납니다.
마우스 왼쪽 버튼을 누른 상태로 움직이면 선이 그려집니다.
전체 지우기 버튼을 누르면 지금까지 그린 그림이 모두 지워집니다.
3. 코드 설명
1) tkinter 불러오기
import tkinter as tk
tkinter는 파이썬에서 창, 버튼, 입력창 같은 화면 프로그램을 만들 때 사용하는 도구입니다.
2) 그림을 그리고 있는지 확인하기
drawing = False
마우스를 누르고 있으면 그림을 그려야 합니다.
그래서 drawing이라는 변수를 사용합니다.
처음에는 마우스를 누르지 않았으므로 False입니다.
3) 마우스를 눌렀을 때
def start_draw(event):
global drawing, last_x, last_y
drawing = True
last_x = event.x
last_y = event.y
마우스를 누르면 그림 그리기가 시작됩니다.
event.x, event.y는 마우스의 위치입니다.
쉽게 말하면,
- event.x는 가로 위치
- event.y는 세로 위치
입니다.
4) 마우스를 움직일 때 선 그리기
def draw(event):
global last_x, last_y
if drawing:
canvas.create_line(
last_x, last_y,
event.x, event.y,
fill="black",
width=3
)
last_x = event.x
last_y = event.y
마우스를 누른 상태로 움직이면 선이 그려집니다.
create_line()은 선을 그리는 명령어입니다.
fill="black"
선 색깔은 검은색입니다.
width=3
선의 두께는 3입니다.
5) 마우스를 뗐을 때
def stop_draw(event):
global drawing
drawing = False
마우스를 떼면 그림 그리기를 멈춥니다.
6) 그림판 지우기
def clear_canvas():
canvas.delete("all")
canvas.delete("all")은 캔버스에 그려진 모든 그림을 지웁니다.
7) 그림 그리는 공간 만들기
canvas = tk.Canvas(window, width=560, height=380, bg="white")
canvas.pack()
Canvas는 그림을 그릴 수 있는 도화지 같은 공간입니다.
배경색은 흰색입니다.
8) 마우스 동작 연결하기
canvas.bind("<ButtonPress-1>", start_draw)
canvas.bind("<B1-Motion>", draw)
canvas.bind("<ButtonRelease-1>", stop_draw)
마우스 동작과 함수를 연결합니다.
코드의미
| <ButtonPress-1> | 마우스 왼쪽 버튼을 눌렀을 때 |
| <B1-Motion> | 마우스 왼쪽 버튼을 누른 채 움직일 때 |
| <ButtonRelease-1> | 마우스 왼쪽 버튼을 뗐을 때 |
4. 프로그램 동작 순서
- 파이썬이 그림판 창을 만듭니다.
- 하얀색 도화지 역할을 하는 캔버스를 만듭니다.
- 사용자가 마우스를 누릅니다.
- 마우스를 움직이면 선이 그려집니다.
- 마우스를 떼면 그림 그리기가 멈춥니다.
- 지우기 버튼을 누르면 그림이 모두 사라집니다.
5. 더 발전시켜 볼 기능
이번 프로그램을 조금 더 발전시키면 진짜 그림판처럼 만들 수 있습니다.
예를 들면 다음 기능을 추가할 수 있습니다.
- 색깔 선택하기
- 선 굵기 바꾸기
- 그림 저장하기
- 지우개 기능 만들기
- 원, 사각형 그리기
6. 마무리
이번 시간에는 파이썬 tkinter를 사용해서 간단한 그림판 프로그램을 만들어 보았습니다.
마우스 이벤트를 사용하면 사용자의 움직임에 따라 프로그램이 반응하게 만들 수 있습니다.
처음에는 단순한 선 그리기부터 시작했지만, 기능을 하나씩 추가하면 멋진 그림판 프로그램으로 발전시킬 수 있습니다.
그림판 만들기

'강의 > Python 기초' 카테고리의 다른 글
| Chapter 24. 파일 탐색기 만들기 (0) | 2026.06.13 |
|---|---|
| Chapter 23. GUI 달력 프로그램 만들기 (0) | 2026.06.13 |
| Chapter 21. 이미지 뷰어 만들기 (0) | 2026.06.11 |
| Chapter 20. GUI 메모장 만들기 (0) | 2026.06.11 |
| Chapter 19. GUI 계산기 만들기 (1) | 2026.06.11 |