Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để lấy tọa độ trên canvas có thể cuộn trong Tkinter?

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ổ.

Làm cách nào để lấy tọa độ trên canvas có thể cuộn trong Tkinter?

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