วิดเจ็ต canvas มีระบบพิกัดสองระบบ:(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