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

การหาตำแหน่งเมาส์ (Mouse Position) ใน Python Tkinter

การติดตามตำแหน่งเมาส์ใน Tkinter ใช้ Event Binding bind('', callback) ฟังก์ชัน Callback จะได้รับ Event Object ที่มี attribute x, y (พิกัดใน Widget) และ x_root, y_root (พิกัดหน้าจอ)

ขั้นตอนการทำงาน

  1. นำเข้า tkinter
  2. สร้าง Root Window
  3. กำหนด Callback Function รับ Event Parameter
  4. ดึงพิกัดจาก event.x และ event.y
  5. ผูก Event '' กับ Window
  6. รัน mainloop()

ตัวอย่างโค้ด


from tkinter import *

win = Tk()
win.geometry("750x250")

def callback(e):
    x = e.x
    y = e.y
    print(f"Pointer is currently at {x}, {y}")

win.bind('', callback)
win.mainloop()

Event Object Attributes สำคัญ

Attributeคำอธิบาย
event.x, event.yพิกัดใน Widget (relative)
event.x_root, event.y_rootพิกัดบนหน้าจอ (absolute)
event.widgetWidget ที่เกิด Event
event.timeTimestamp (milliseconds)
event.stateModifier keys state (Shift, Ctrl, Alt)

ตัวอย่างประยุกต์: แสดงพิกัด Real-time ใน Label


from tkinter import *

win = Tk()
win.geometry("400x300")

coord_label = Label(win, text="X: 0, Y: 0", font=('Consolas', 14))
coord_label.pack(pady=20)

def update_coords(event):
    coord_label.config(text=f"Widget: ({event.x}, {event.y})\nScreen: ({event.x_root}, {event.y_root})")

win.bind('', update_coords)
win.mainloop()

การใช้กับ Canvas (Drawing App)


canvas = Canvas(win, bg='white', width=600, height=400)
canvas.pack()

last_x, last_y = None, None

def start_draw(event):
    global last_x, last_y
    last_x, last_y = event.x, event.y

def draw(event):
    global last_x, last_y
    canvas.create_line(last_x, last_y, event.x, event.y, width=2)
    last_x, last_y = event.x, event.y

canvas.bind('', start_draw)
canvas.bind('', draw)

การประยุกต์ใช้

พื้นฐานของ: Drawing apps, Games, Screen savers, Mouse tracking analytics, Tooltip positioning, Drag & Drop, Custom cursor effects