Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะรับพิกัดบนผืนผ้าใบที่เลื่อนได้ใน Tkinter ได้อย่างไร?


วิดเจ็ต 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()

ผลลัพธ์

การเรียกใช้โค้ดด้านบนจะแสดงหน้าต่าง

จะรับพิกัดบนผืนผ้าใบที่เลื่อนได้ใน Tkinter ได้อย่างไร?

หากเราเลื่อนตัวชี้เมาส์และคลิกที่ใดก็ได้บนผืนผ้าใบ ตัวชี้จะพิมพ์พิกัดสัมพัทธ์ของตัวชี้บนคอนโซล

start_x, start_y = 340.0 159.0