
이 강의는 Tkinter GUI 강의 57강입니다
56강에서는
Canvas 아이템을
move() 메서드로 이동시키는 방법을 배웠습니다.
이번 강의에서는
Canvas에 그려진 객체를
완전히 제거하는 방법,
delete() 메서드를 다룹니다.
이번 강의의 목표는 분명합니다.
Canvas 아이템의
생명주기(생성 → 이동 → 삭제) 를 완성하는 것입니다.
Canvas에서 삭제란 무엇인가
Canvas 아이템 삭제는
“숨김”이 아닙니다.
Canvas에서 delete는 완전 제거입니다.
- 화면에서 사라짐
- ID도 더 이상 유효하지 않음
- 다시 되돌릴 수 없음
delete 메서드 기본 형태
canvas.delete(item_id)
- item_id : 삭제할 Canvas 아이템의 ID
아주 단순하지만
Canvas 제어에서
매우 중요한 메서드입니다.
가장 단순한 삭제 예제
import tkinter as tk
window = tk.Tk()
window.geometry("320x240")
canvas = tk.Canvas(window, width=300, height=200, bg="white")
canvas.pack(pady=20)
box = canvas.create_rectangle(80, 60, 160, 140, fill="skyblue")
canvas.delete(box)
window.mainloop()
실행하면
사각형은
보이지 않습니다.

버튼으로 삭제하기
삭제는
보통 이벤트와 함께 사용됩니다.
import tkinter as tk
window = tk.Tk()
window.geometry("320x240")
canvas = tk.Canvas(window, width=300, height=200, bg="white")
canvas.pack()
box = canvas.create_rectangle(80, 60, 160, 140, fill="orange")
def remove_box():
canvas.delete(box)
tk.Button(window, text="삭제", command=remove_box).pack(pady=10)
window.mainloop()
버튼을 누르면
Canvas 아이템이
즉시 제거됩니다.


이미 삭제된 ID를 다시 쓰면?
아주 중요한 포인트입니다.
canvas.delete(box)
canvas.move(box, 10, 0)
이렇게 하면
아무 일도 일어나지 않습니다.
삭제된 ID는 더 이상 존재하지 않는 객체입니다.
에러가 나지 않는다고
정상이라고 생각하면
안 됩니다.
여러 아이템 한 번에 삭제하기
리스트로 관리 중인 경우
반복문으로 처리합니다.
items = [
canvas.create_rectangle(20, 20, 70, 70),
canvas.create_rectangle(90, 20, 140, 70)
]
for item in items:
canvas.delete(item)
이 패턴은
초기화, 리셋 기능의
기초입니다.
Canvas 전체 삭제하기
Canvas는
모든 아이템을
한 번에 삭제할 수 있습니다.
canvas.delete("all")
이 코드는
Canvas를
완전히 비웁니다.
delete는 “상태 관리”와 연결된다
Canvas 아이템을
삭제했다면
다음도 함께 처리해야 합니다.
- ID 변수 정리
- 리스트 / 딕셔너리에서 제거
- 현재 선택 상태 초기화
삭제는
UI 로직과
항상 함께 다뤄집니다.
초보자가 자주 하는 실수
다음 실수는
아주 흔합니다.
- 삭제 후에도 ID를 계속 사용함
- 화면만 지웠다고 상태를 유지함
- delete("all") 후 내부 데이터 미정리
Canvas는
화면과 데이터가 분리된 구조라는 점을
항상 기억해야 합니다.
Canvas 제어의 기본 3종 세트
이제
Canvas 기본 제어는
완성되었습니다.
- create → 생성
- move → 이동
- delete → 삭제
이 3가지는
이후 모든 Canvas 응용의
기본 재료입니다.
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- canvas.delete(id)는 아이템을 완전히 제거한다
- 삭제된 ID는 다시 사용할 수 없다
- 여러 아이템은 반복문으로 삭제한다
- canvas.delete("all")로 전체 초기화 가능
다음 강의 예고
다음 강의에서는
Canvas 아이템의 속성을 변경하는 방법(itemconfig) 을 다룹니다.
이제
Canvas 객체는
움직일 뿐 아니라
모습도 바뀌기 시작합니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 59강 Canvas 아이템 좌표 직접 다루기(coords) (0) | 2026.02.19 |
|---|---|
| [Tkinter] 58강 Canvas 아이템 속성 변경 (itemconfig) (0) | 2026.02.18 |
| [Tkinter] 56강 Canvas 아이템 이동(move)시키기 (0) | 2026.02.17 |
| [Tkinter] 55강 Canvas 아이템 ID 개념 이해하기 (0) | 2026.02.17 |
| [Tkinter] 54강 Canvas에 텍스트와 이미지 그리기 (0) | 2026.02.16 |