본문 바로가기

[Tkinter] 57강 Canvas 아이템 삭제(Delete)하기

@도마22026. 2. 18. 18:00
728x90


이 강의는 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 객체는
움직일 뿐 아니라
모습도 바뀌기 시작합니다.


728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차