
이 강의는 Tkinter GUI 강의 61강입니다
60강에서는
Canvas 아이템의 겹침과 레이어 순서를 제어하는 방법을 배웠습니다.
이번 강의에서는
Canvas에 그려진 모든 아이템을 한 번에 제거하고,
내부 상태까지 함께 정리하는 초기화(reset) 개념을 다룹니다.
이번 강의의 목표는 분명합니다.
Canvas를 언제든 깨끗한 상태로 되돌릴 수 있는 구조를 만드는 것입니다.
Canvas 초기화가 필요한 이유
실제 프로그램에서는
다음과 같은 상황이 자주 발생합니다.
- 새 작업 시작
- 파일 다시 열기
- 실행 취소 / 리셋
- 화면 재구성
이때
아이템 하나씩 지우는 방식은
비효율적입니다.
Canvas 전체 삭제 기본 코드
Canvas는
모든 아이템을 한 번에 삭제하는
명령을 제공합니다.
canvas.delete("all")
이 한 줄로
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)
canvas.create_rectangle(50, 50, 150, 120, fill="skyblue")
canvas.create_text(150, 160, text="Canvas 내용")
canvas.delete("all")
window.mainloop()
실행 결과는
빈 Canvas입니다.
버튼으로 Canvas 초기화하기
import tkinter as tk
window = tk.Tk()
window.geometry("320x240")
canvas = tk.Canvas(window, width=300, height=200, bg="white")
canvas.pack()
canvas.create_rectangle(60, 60, 140, 140, fill="orange")
def reset_canvas():
canvas.delete("all")
tk.Button(window, text="초기화", command=reset_canvas).pack(pady=10)
window.mainloop()
버튼을 누르면
Canvas가
완전히 비워집니다.


delete("all")의 정확한 의미
중요한 포인트입니다.
delete("all")은 Canvas 내부 아이템만 삭제한다
- Canvas 위젯 자체 X
- Canvas 크기 X
- 배경색 X
즉,
그림만 지우는 것입니다.
초기화 시 반드시 함께 정리할 것들
Canvas만 비우면
문제가 생길 수 있습니다.
다음 항목들도
함께 정리해야 합니다.
- 아이템 ID 변수
- 아이템 리스트 / 딕셔너리
- 현재 선택 상태
- 내부 플래그 값
잘못된 초기화 예
canvas.delete("all")
canvas.move(box, 10, 0)
이 코드는
의미가 없습니다.
- box ID는 이미 삭제됨
- 내부 상태는 그대로
초기화는
상태 리셋까지 포함해야 합니다.
안전한 초기화 패턴
items = []
def reset():
canvas.delete("all")
items.clear()
Canvas와
프로그램 상태를
동시에 리셋합니다.
Canvas 초기화는 “상태 전환”이다
초기화는
단순한 삭제가 아니라
상태 변경 이벤트입니다.
그래서 보통
다음과 같이 사용합니다.
- 새 파일 열기 전에 초기화
- 작업 취소 시 초기화
- 모드 변경 시 초기화
Canvas 초기화와 레이어 관계
delete("all") 이후에는
레이어 정보도
모두 사라집니다.
즉,
새로 그리는 아이템은
다시 처음부터 레이어를 쌓게 됩니다.
초보자가 자주 하는 실수
다음 실수는
아주 흔합니다.
- Canvas만 지우고 내부 데이터 유지
- delete("all") 후 이전 ID 사용
- 초기화 후 화면 재구성 누락
초기화는
항상 전체 흐름으로 생각해야 합니다.
Canvas 제어 단계 정리
여기까지 오면
Canvas 제어 흐름은 완성됩니다.
- 생성 (create)
- 이동 (move)
- 삭제 (delete)
- 변경 (itemconfig)
- 좌표 (coords)
- 레이어 (tag_raise / tag_lower)
- 초기화 (delete("all"))
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- canvas.delete("all")로 전체 초기화
- Canvas 위젯 자체는 유지된다
- 내부 상태도 함께 리셋해야 한다
- 초기화는 상태 전환이다
다음 강의 예고
다음 강의에서는
Canvas 상태를 체계적으로 관리하는 방법을 다룹니다.
이제
Canvas를
“그리는 도구”가 아니라
관리 대상 객체로 다룹니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 63강 Canvas 마우스 클릭 이벤트 처리 (0) | 2026.02.21 |
|---|---|
| [Tkinter] 62강 Canvas 상태 관리 기초 (0) | 2026.02.20 |
| [Tkinter] 60강 Canvas 그리기 순서와 레이어 개념 이해하기 (0) | 2026.02.19 |
| [Tkinter] 59강 Canvas 아이템 좌표 직접 다루기(coords) (0) | 2026.02.19 |
| [Tkinter] 58강 Canvas 아이템 속성 변경 (itemconfig) (0) | 2026.02.18 |