본문 바로가기

[Tkinter] 55강 Canvas 아이템 ID 개념 이해하기

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


이 강의는 Tkinter GUI 강의 55강입니다

54강에서는
Canvas에 텍스트와 이미지를 그리며
Canvas가 정보 표현용 UI라는 것을 확인했습니다.

이번 강의에서는
Canvas를 제어하기 위한 핵심 개념,
아이템 ID(Item ID) 를 다룹니다.

이번 강의의 목표는 분명합니다.
Canvas에 그린 요소를
다시 찾아서 조작할 수 있는 방법을 이해하는 것입니다.


Canvas는 왜 ID를 필요로 할까

Canvas에 그린 선, 도형, 텍스트는
모두 “그려지고 끝”이 아닙니다.

실제로는
이후에 이런 작업을 하게 됩니다.

  • 이동시키기
  • 삭제하기
  • 색상 바꾸기
  • 텍스트 변경하기

이때 필요한 것이
아이템 ID입니다.


Canvas 아이템 ID란 무엇인가

Canvas에서
create_ 메서드를 호출하면
항상 정수 하나를 반환합니다.

item_id = canvas.create_rectangle(...)

이 숫자가 바로
해당 아이템을 식별하는
ID입니다.


가장 단순한 ID 확인 예제

import tkinter as tk

window = tk.Tk()
window.geometry("320x240")

canvas = tk.Canvas(window, width=300, height=200, bg="white")
canvas.pack(pady=20)

rect_id = canvas.create_rectangle(50, 50, 150, 120, fill="skyblue")
print(rect_id)

window.mainloop()

콘솔에
1, 2 같은 숫자가
출력됩니다.


ID는 Canvas 안에서만 의미가 있다

중요한 개념 하나입니다.

아이템 ID는 해당 Canvas 내부에서만 유효합니다.

  • 다른 Canvas에서는 사용 불가
  • 프로그램 전체 ID가 아님

즉,
Canvas별로
독립적인 관리 체계를 가집니다.


여러 아이템의 ID는 이렇게 관리된다

line_id = canvas.create_line(20, 20, 280, 20)
rect_id = canvas.create_rectangle(40, 50, 140, 150)
oval_id = canvas.create_oval(160, 50, 260, 150)

각 아이템은
생성 순서대로
ID를 부여받습니다.


ID를 변수에 저장하는 이유

ID를 변수에 저장하지 않으면
그 아이템을
다시 제어할 방법이 없습니다.

canvas.create_rectangle(...)

이렇게만 쓰면
“그리기 전용”이 됩니다.

반대로:

box = canvas.create_rectangle(...)

이렇게 쓰면
제어 가능한 객체가 됩니다.


ID로 할 수 있는 일 미리 보기

아이템 ID가 있으면
다음과 같은 작업이 가능합니다.

canvas.move(box, 10, 0)
canvas.delete(box)
canvas.itemconfig(box, fill="red")

이 개념들이
다음 강의부터
하나씩 이어집니다.


여러 ID를 묶어서 관리하기

Canvas에서
여러 객체를 다루게 되면
보통 리스트나 딕셔너리를 사용합니다.

items = []

items.append(canvas.create_rectangle(10, 10, 60, 60))
items.append(canvas.create_rectangle(70, 10, 120, 60))

이 구조는
드래그, 선택, 삭제 처리의
기초가 됩니다.


ID는 곧 “객체의 정체성”이다

Canvas 아이템은
클래스 인스턴스가 아닙니다.

하지만
ID를 통해
객체처럼 다룰 수 있습니다.

이게
Canvas가
강력한 이유 중 하나입니다.


초보자가 자주 헷갈리는 포인트

다음은
아주 흔한 실수입니다.

  • ID를 저장하지 않음
  • 여러 아이템을 하나의 변수로 덮어씀
  • 어떤 ID가 어떤 객체인지 헷갈림

이 문제는
처음부터 ID 관리 습관을 들이면
사라집니다.


Canvas 제어의 출발점

여기서 꼭 기억할 문장입니다.

Canvas를 제어하려면 반드시 아이템 ID가 필요하다

이 개념이
이후의 이동, 이벤트, 애니메이션
전부의 출발점입니다.


이번 강의 핵심 정리

이번 강의에서 꼭 기억해야 할 내용입니다.

  • Canvas 아이템은 생성 시 ID를 반환한다
  • ID는 정수이며 Canvas 내부에서만 유효하다
  • ID를 저장해야 제어가 가능하다
  • ID는 Canvas 객체의 정체성이다

다음 강의 예고

다음 강의에서는
Canvas 아이템을 실제로 이동(move)시키는 방법을 다룹니다.

이제
Canvas 객체가
“움직이기” 시작합니다.


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

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

목차