Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter 캔버스에서 객체의 좌표를 가져오는 방법

Tkinter의 Canvas(캔버스) 위젯은 애플리케이션에 다양한 GUI 기능을 제공하는 강력한 도구입니다. 이 위젯을 사용하면 도형을 그리거나, 객체를 애니메이션으로 표현하거나, 캔버스에 이미 존재하는 항목들을 자유롭게 설정할 수 있습니다.

캔버스에 도형을 생성할 때는 반드시 해당 도형의 크기와 좌표를 Canvas 항목 생성자에 지정해야 합니다. 그렇다면 이미 캔버스에 그려진 항목의 좌표를 다시 확인하고 싶을 때는 어떻게 해야 할까요?

이때 coords(item) 메서드를 사용하면 됩니다. 이 메서드는 지정한 항목의 좌표 값을 리스트(list) 형태로 반환하며, 이를 활용해 도형의 위치 정보를 손쉽게 확인할 수 있습니다.

예제 코드

from tkinter import *

# Tkinter 프레임 인스턴스 생성
win = Tk()

# Tkinter 프레임의 크기 설정
win.geometry("700x250")

# 캔버스 객체 초기화
canvas = Canvas(win, width=500, height=300)

# 캔버스 안에 타원(oval) 그리기
c = canvas.create_oval(100, 10, 410, 200, outline="red", fill="#adf123")
canvas.pack(expand=True, fill=BOTH)

# 타원의 좌표를 가져와서 출력
print("객체의 좌표:", canvas.coords(c))

win.mainloop()

실행 결과

위 코드를 실행하면 캔버스 안에 초록색 바탕에 빨간색 테두리를 가진 타원이 그려진 창이 나타납니다.

Tkinter 캔버스에서 객체의 좌표를 가져오는 방법

동시에 콘솔에는 해당 객체의 좌표 값이 출력됩니다.

객체의 좌표: [100.0, 10.0, 410.0, 200.0]

코드 설명

  • create_oval(x1, y1, x2, y2): 왼쪽 상단 모서리 좌표 (x1, y1)과 오른쪽 하단 모서리 좌표 (x2, y2)를 기준으로 타원을 생성합니다.
  • coords(c): 항목 ID인 c를 인자로 전달받아 해당 객체의 네 개 좌표 값을 [x1, y1, x2, y2] 형태의 리스트로 반환합니다.

반환된 좌표 값을 활용하면 이후 move(), itemconfig() 등의 메서드와 함께 사용하여 객체의 위치를 동적으로 변경하거나 애니메이션 효과를 구현할 수도 있습니다.