كيفية اكتشاف نقرات الفأرة في بايثون


كيفية تتبع نقرات و تحريك الفأرة باستخدام لغة البرمجة بايثون بمساعدة المكتبة pynput.
للوصول الى هدفنا و هو كيفية تتبع نقرات و تحريك الفأرة, اولا نقوم بتثبيت المكتبة pynput باستعمال الادات pip.
تثبيت المكتبة pynput
لتثبيت المكتبة نقوم بتنفيذ الامر التالي في منفذ الاوامر:
pip install pynput
للتاكد من ان المكتبة نجح تثبيتها قم بالمر التالي:
$ pip install pynput
Collecting pynput
Using cached pynput-1.7.6-py2.py3-none-any.whl (89 kB)
...
...
Successfully installed pynput-1.7.6
بناء البرنامج
اولا نقوم بانشاء ملف و حفظه بالاسم detect_mouse_click.py. ثم نقوم بكتابة السطر الاول و الذي يقوم بتضمين الـ Listener من المكتبة pynput.mouse:
from pynput.mouse import Listener
سنقوم بإعداد Listener عن طريق إنشاء instance في تعليمة with واستخدام أسلوب .join () لضمه إلى برنامج الرئيسي.
with Listener() as listener:
listener.join()
نقوم بانشاء ثلاث دوال والتي هي عند_التحرك و عند_النقر و عند_التمرير (on_move, on_click, on_scroll):
def on_move(x, y):
print(f"Mouse moved to ({x}, {y})")
def on_click(x, y, button, pressed):
if pressed:
print(f'Mouse clicked at {x}, {y}) with {button}')
def on_scroll(x, y, dx, dy):
print(f'Mouse scrolled at ({x}, {y})({dx}, {dy})')
اضافة الـ Listener
نقوم بربط هذه الدوال بالـ Listener بالدوال عن ذريق تمريرها كـ args ؛ الآن عند حدوث أمر ما، سيتم تشغيل إحدى هذه الدوال.
with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
ملاحضة حول Listener
كملاحظة سريعة، فإن الـ Listener عبارة عن Thread مما يعني أنه بمجرد انضمامها إلى البرنامج الرئيسي، لن يتم تنفيذ أي رمز بعده حتى يتم إيقافه. برنامجنا حتى هذه اللحضة سيعمل و لكن لن تستطيع اقافه الى عنن طريق ايقاف منفذ الاوامر.
يمكننا استدعاء pynput.mouse.Listener.stop في أي مكان في البرنامج لإيقاف Thread .
يمكننا أيضًا استدعاء listener.stop () في أحد الدوال نظرًا لحقيقة أن Listener موجود الآن في النطاق (scope) وهو instance للـ OS Listener.
البرنامج الكامل
from pynput.mouse import Listener
def on_move(x, y):
print(f"Mouse moved to ({x}, {y})")
def on_click(x, y, button, pressed):
if pressed:
print(f'Mouse clicked at {x}, {y}) with {button}')
def on_scroll(x, y, dx, dy):
print(f'Mouse scrolled at ({x}, {y})({dx}, {dy})')
listener.stop()
with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
listener.join()
في هذا لابرنامج قما بوضع listener.stop () في دالة التحريك, والتي تقوم بتوقيف الـ Thread. يمكنك تغيير هذا السلوك حسب احتياجك.
الخاتمة
في هذا الموضوع قمنا بانشاء ثلاث دوال تقوم بطبع الامر الذي تقوم به الفأرة, و من ثم مررنا تلك الدوال الى الـ Listener. في النهاية قمنا بانهاءه بنداء listener.stop ().
نتمنى ان الموضوع كان مفيدا, تفقد مواضعنا الاخرى حول بايثون:
تذكر أن المساهمات في هذا الموضوع يجب أن تتبع إرشادات المجتمع.
لا توجد تعليقات بعد.