캔버스 위젯에는 (a) 창 좌표계와 (b) 캔버스 좌표계의 두 가지 좌표계가 있습니다. 창 좌표계는 항상 창의 가장 왼쪽 모서리(0,0)에서 시작하는 반면 캔버스 좌표계는 항목이 캔버스에서 실제로 배치되는 위치를 지정합니다.
창 좌표계를 캔버스 좌표계로 변환하려면 다음 두 가지 방법을 사용할 수 있습니다.
canvasx(event.x) canvas(event.y)
창 좌표계의 경우를 고려하면 마우스 이벤트는 창 좌표계에서만 발생합니다. 창 좌표를 캔버스 좌표계로 변환할 수 있습니다.
예시
이 응용 프로그램에서 우리는 캔버스 위젯 내부에서 마우스 포인터의 위치를 얻을 것입니다.
# Import the required libraries from tkinter import * # Create an instance of tkinter frame or window win = Tk() # Set the size of the window win.geometry("700x350") # Create a canvas widget canvas = Canvas(win) canvas.pack() def on_button_pressed(event): start_x = canvas.canvasx(event.x) start_y = canvas.canvasy(event.y) print("start_x, start_y =", start_x, start_y) def on_button_motion(event): end_x = canvas.canvasx(event.x) end_y = canvas.canvasy(event.y) print("end_x, end_y=", end_x, end_y) # Bind the canvas with Mouse buttons canvas.bind("<Button-1>", on_button_pressed) canvas.bind("<Button1-Motion>", on_button_motion) # Add a Label widget in the window Label(win, text="Move the Mouse Pointer and click " "anywhere on the Canvas").pack() win.mainloop()
출력
위의 코드를 실행하면 창이 표시됩니다.
마우스 포인터를 이동하고 캔버스의 아무 곳이나 클릭하면 콘솔에 포인터의 상대 좌표가 인쇄됩니다.
start_x, start_y = 340.0 159.0