Tiện ích canvas có hai hệ tọa độ:(a) Hệ tọa độ cửa sổ và (b) hệ tọa độ canvas. Hệ thống tọa độ cửa sổ luôn bắt đầu từ góc ngoài cùng bên trái (0,0) trong cửa sổ, trong khi hệ thống tọa độ canvas chỉ định vị trí các mục thực sự được đặt trong canvas.
Để chuyển đổi hệ tọa độ cửa sổ sang hệ tọa độ canvas, chúng ta có thể sử dụng hai phương pháp sau,
canvasx(event.x) canvas(event.y)
Nếu chúng ta xem xét trường hợp của hệ tọa độ cửa sổ, thì các sự kiện chuột chỉ xảy ra trong hệ tọa độ cửa sổ. Chúng tôi có thể chuyển đổi tọa độ cửa sổ thành hệ tọa độ canvas.
Ví dụ
Trong ứng dụng này, chúng tôi sẽ lấy vị trí của con trỏ chuột bên trong tiện ích canvas.
# 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()
Đầu ra
Chạy đoạn mã trên sẽ hiển thị một cửa sổ.
Nếu chúng ta di chuyển con trỏ chuột và nhấp vào bất kỳ đâu trên canvas, thì nó sẽ in ra tọa độ tương đối của con trỏ trên bảng điều khiển.
start_x, start_y = 340.0 159.0