Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Tkinter에서 스크롤 가능한 캔버스의 좌표를 얻는 방법은 무엇입니까?

<시간/>

캔버스 위젯에는 (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()

출력

위의 코드를 실행하면 창이 표시됩니다.

Tkinter에서 스크롤 가능한 캔버스의 좌표를 얻는 방법은 무엇입니까?

마우스 포인터를 이동하고 캔버스의 아무 곳이나 클릭하면 콘솔에 포인터의 상대 좌표가 인쇄됩니다.

start_x, start_y = 340.0 159.0