وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

شروع با Python PyAutoGUI

0 265
زمان لازم برای مطالعه: 8 دقیقه


معرفی

در این آموزش قصد داریم روش استفاده را یاد بگیریم pyautogui کتابخانه در پایتون 3. The PyAutoGUI کتابخانه پشتیبانی بین پلتفرمی را برای مدیریت عملیات ماوس و صفحه کلید از طریق کد برای فعال کردن اتوماسیون وظایف فراهم می کند. این pyautogui کتابخانه برای پایتون 2 نیز موجود است. با این حال، ما از پایتون 3 در طول این آموزش استفاده خواهیم کرد.

ابزاری مانند این کاربردهای زیادی دارد که تعدادی از آنها شامل گرفتن اسکرین شات، خودکار کردن تست رابط کاربری گرافیکی (مانند سلنیوم)، خودکارسازی کارهایی که فقط با رابط کاربری گرافیکی قابل انجام هستند و غیره است.

قبل از اینکه این آموزش را ادامه دهید، لطفاً توجه داشته باشید که چند پیش نیاز وجود دارد. شما باید درک اولیه ای از سینتکس پایتون داشته باشید و/یا حداقل برنامه نویسی سطح مبتدی را به زبان دیگری انجام داده باشید. به غیر از آن، آموزش برای مبتدیان بسیار ساده و آسان است.

نصب و راه اندازی

نصب process برای PyAutoGUI برای همه سیستم عامل ها نسبتاً ساده است. با این حال، چند وابستگی برای مک و لینوکس وجود دارد که قبل از نصب باید نصب شوند PyAutoGUI کتابخانه را می توان نصب کرد و در برنامه ها استفاده کرد.

پنجره ها

برای ویندوز، PyAutoGUI هیچ وابستگی ندارد به سادگی دستور زیر را در خط فرمان خود اجرا کنید و نصب انجام می شود.

$ pip install PyAutoGUI

مک

برای مک، pyobjc-core و pyobjc ماژول ها ابتدا باید به ترتیب نصب شوند. در زیر دستوراتی وجود دارد که باید به ترتیب در خود اجرا کنید terminal برای نصب موفق:

$ pip3 install pyobjc-core
$ pip3 install pyobjc
$ pip3 install pyautogui

لینوکس

برای لینوکس، تنها وابستگی است python3-xlib (برای پایتون 3). برای نصب آن، به دنبال آن pyautogui، دو دستور ذکر شده در زیر را در خود اجرا کنید terminal:

$ pip3 install python3-xlib
$ pip3 install pyautogui

نمونه های کد پایه

در این بخش، ما قصد داریم برخی از متداول ترین توابع مورد استفاده را در این بخش پوشش دهیم PyAutoGUI کتابخانه

توابع عمومی

تابع position().

قبل از اینکه بتوانیم استفاده کنیم PyAutoGUI توابع، ما نیاز داریم import آن را در برنامه ما:

import pyautogui as pag

این position() تابع موقعیت فعلی ماوس را به ما می گوید روی صفحه نمایش ما:

pag.position()

خروجی:

Point (x = 643, y = 329)

تابع onScreen().

این onScreen() تابع به ما می گوید که آیا نقطه با مختصات x و y وجود دارد یا خیر روی صفحه نمایش:

print(pag.onScreen(500, 600))
print(pag.onScreen(0, 10000))

خروجی:

True
False

در اینجا می بینیم که اولین نکته وجود دارد روی صفحه نمایش، اما نکته دوم فراتر از ابعاد صفحه نمایش است.

تابع size().

این size() تابع ارتفاع و عرض (رزولیشن) یک صفحه را پیدا می کند.

pag.size()

خروجی:

Size (width = 1440, height = 900)

خروجی شما ممکن است متفاوت باشد و بستگی دارد روی اندازه صفحه نمایش شما

عملیات متداول ماوس

در این بخش قصد داریم به آن بپردازیم PyAutoGUI توابع برای دستکاری ماوس، که شامل جابجایی مکان نما و همچنین کلیک روی دکمه ها به صورت خودکار از طریق کد می شود.

تابع moveTo().

نحو از moveTo() عملکرد به شرح زیر است:

pag.moveTo(x_coordinate, y_coordinate)

ارزش x_coordinate از چپ به راست افزایش می یابد روی صفحه نمایش، و ارزش y_coordinate از بالا به پایین افزایش می یابد. ارزش هر دو x_coordinate و y_coordinate در گوشه سمت چپ بالای صفحه 0 است.

به اسکریپت زیر نگاه کنید:

pag.moveTo(0, 0)
pag.PAUSE = 2
pag.moveTo(100, 500) 
pag.PAUSE = 2
pag.moveTo(500, 500)

در کد بالا، تمرکز اصلی بر روی است moveTo() عملکردی که نشانگر ماوس را حرکت می دهد روی بر اساس صفحه نمایش روی مختصاتی که به عنوان پارامتر ارائه می کنیم. پارامتر اول مختصات x و پارامتر دوم مختصات y است. توجه به این نکته ضروری است که این مختصات نشان دهنده موقعیت مطلق مکان نما هستند.

یکی دیگر از مواردی که در کد بالا معرفی شده است PAUSE ویژگی؛ اساساً اجرای اسکریپت را برای مدت زمان معین متوقف می کند. این PAUSE ویژگی در کد بالا اضافه شده است تا بتوانید اجرای تابع را مشاهده کنید. در غیر این صورت، توابع در کسری از ثانیه اجرا می شوند و شما نمی توانید در واقع حرکت مکان نما را از یک مکان به مکان دیگر ببینید. روی صفحه نمایش

راه حل دیگر برای این کار، نشان دادن زمان برای هر یک خواهد بود moveTo() عملیات به عنوان سومین پارامتر در تابع، به عنوان مثال moveTo(x, y, time_in_seconds).

اجرای اسکریپت بالا ممکن است منجر به خطای زیر شود:

توجه: خطای احتمالی

Traceback (most recent call last):
  File "a.py", line 5, in <module>
    pag.moveTo (100, 500)
  File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 811, in moveTo
    _failSafeCheck()
  File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 1241, in _failSafeCheck
    raise FailSafeException ('PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.')
pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.

اگر اجرای moveTo() عملکرد خطای مشابهی را ایجاد می کند که در بالا نشان داده شده است، به این معنی که Fail-Safe رایانه شما فعال است. برای غیرفعال کردن Fail-Safe خط زیر را در ابتدای کد خود اضافه کنید:

pag.FAILSAFE = False

این ویژگی به صورت پیش فرض فعال است تا بتوانید به راحتی اجرای خود را متوقف کنید pyautogui با حرکت دستی ماوس به گوشه سمت چپ بالای صفحه برنامه را برنامه ریزی کنید. هنگامی که ماوس در این مکان قرار گرفت، pyautogui یک استثنا پرتاب می کند و خارج می شود.

تابع ()moveRel

مختصات از moveTo() تابع مطلق هستند. با این حال، اگر می خواهید موقعیت ماوس را نسبت به موقعیت فعلی ماوس جابجا کنید، می توانید از آن استفاده کنید moveRel() تابع.

این بدان معناست که نقطه مرجع برای این تابع، هنگام حرکت مکان نما، نقطه بالا سمت چپ نخواهد بود روی صفحه نمایش (0، 0)، اما موقعیت فعلی نشانگر ماوس. بنابراین، اگر نشانگر ماوس شما در حال حاضر در نقطه (100، 100) است. روی صفحه نمایش و شما تماس بگیرید moveRel() عملکرد با پارامترها (100, 100, 2) موقعیت جدید مکان نما حرکت شما (200، 200) خواهد بود.

می توانید استفاده کنید moveRel() عملکرد مطابق شکل زیر:

pag.moveRel(100, 100, 2)

اسکریپت بالا مکان نما را با توجه به موقعیت فعلی مکان نما، در عرض 2 ثانیه 100 نقطه به سمت راست و 100 نقطه به پایین حرکت می دهد.

تابع () click

این click() تابع برای تقلید از عملیات کلیک ماوس استفاده می شود. نحو برای click() عملکرد به شرح زیر است:

pag.click(x, y, clicks, interval, button)

پارامترها به شرح زیر توضیح داده شده است:

  • x: مختصات x نقطه ای که باید به آن رسید
  • y: مختصات y نقطه برای رسیدن
  • clicks: تعداد کلیک هایی که می خواهید با رسیدن مکان نما به آن نقطه انجام دهید روی صفحه نمایش
  • interval: مدت زمان در ثانیه بین هر کلیک ماوس یعنی اگر چندین کلیک ماوس انجام می دهید
  • button: مشخص کنید کدام دکمه روی وقتی مکان نما به آن نقطه رسید، ماوسی را که می خواهید فشار دهید روی صفحه نمایش مقادیر ممکن هستند right، left، و middle.

به عنوان مثال:

pag.click(100, 100, 5, 2, 'right')

همچنین می توانید توابع کلیک خاصی را به صورت زیر اجرا کنید:

pag.rightClick(x, y)
pag.doubleClick(x, y)
pag.tripleClick(x, y)
pag.middleClick(x, y)

اینجا x و y نمایندگی x و y مختصات، درست مانند توابع قبلی.

همچنین می‌توانید با تعیین زمان فشار دادن ماوس به پایین و زمان رها کردن آن، کنترل دقیق‌تری بر روی کلیک‌های ماوس داشته باشید. این کار با استفاده از mouseDown و mouseUp توابع، به ترتیب.

در اینجا یک مثال کوتاه است:

pag.mouseDown(x=x, y=y, button='left')
pag.mouseUp(x=x, y=y, button='left')

کد بالا معادل فقط انجام a است pag.click(x, y) زنگ زدن.

تابع scroll().

آخرین عملکرد ماوس که می خواهیم پوشش دهیم این است scroll. همانطور که انتظار می رفت، دو گزینه دارد: اسکرول به بالا و اسکرول پایین. نحو برای scroll() عملکرد به شرح زیر است:

pag.scroll(amount_to_scroll, x=x_movement, y=y_movement)

برای پیمایش به بالا، یک مقدار مثبت برای آن مشخص کنید amount_to_scroll پارامتر و برای اسکرول کردن به پایین، مقدار منفی را مشخص کنید. به عنوان مثال:

pag.scroll(100, 120, 120)

خوب، این برای عملکردهای ماوس بود. در حال حاضر، شما باید بتوانید دکمه های ماوس و همچنین حرکات را از طریق کد کنترل کنید. بیایید اکنون به عملکردهای صفحه کلید برویم. تعداد زیادی وجود دارد، اما ما فقط مواردی را که بیشتر مورد استفاده قرار می‌گیرند پوشش می‌دهیم.

عملیات رایج صفحه کلید

قبل از رفتن به توابع، مهم است که بدانیم کدام کلیدها را می توان از طریق کد فشار داد pyautoguiو همچنین نامگذاری دقیق آنها. برای انجام این کار، اسکریپت زیر را اجرا کنید:

print(pag.KEYBOARD_KEYS)

خروجی:

('\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', '(', '\\', ')', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen', 'command', 'option', 'optionleft', 'optionright')

این typewrite() تابع

این typewrite() تابع برای تایپ چیزی در یک فیلد متنی استفاده می شود. نحو برای تابع به شرح زیر است:

pag.typewrite(text, interval)

اینجا text چیزی است که می خواهید در فیلد تایپ کنید و interval زمان بین هر ضربه کلید بر حسب ثانیه است. به عنوان مثال:

pag.typewrite('Junaid Khalid', 1)

با اجرای اسکریپت بالا وارد متن می شود Junaid Khalid در فیلدی که در حال حاضر با یک مکث 1 ثانیه ای بین فشار دادن هر کلید انتخاب شده است.

روش دیگری که می‌توان از این تابع استفاده کرد این است که فهرستی از کلیدهایی را که می‌خواهید به ترتیب فشار دهید، وارد کنید. برای انجام این کار از طریق کد، به مثال زیر مراجعه کنید:

pag.typewrite(('j', 'u', 'n', 'a', 'i', 'd', 'e', 'backspace', 'enter'))

در مثال بالا، متن junaide وارد می شود و به دنبال آن قسمت انتهایی حذف می شود e. ورودی فیلد متن با فشار دادن دکمه ارسال می شود Enter کلید

این hotkey() تابع

اگر تا کنون متوجه این موضوع نشده اید، کلیدهایی که در بالا نشان داده ایم هیچ اشاره ای به عملیات ترکیبی مانند Control + C برای دستور کپی اگر فکر می کنید می توانید با عبور از لیست این کار را انجام دهید ('ctrl', 'c') به typewrite() عملکرد، شما اشتباه می کنید. این typewrite() عملکرد هر دو دکمه را به ترتیب فشار می دهد، نه همزمان. و همانطور که احتمالا قبلاً می دانید، برای اجرای دستور copy، باید دکمه را فشار دهید C در حالی که کلید را نگه داشته اید ctrl کلید

برای فشار دادن دو یا چند کلید به طور همزمان، می توانید از hotkey() تابع، همانطور که در اینجا نشان داده شده است:

pag.hotkey('shift', 'enter')
pag.hotkey('ctrl', '2' ) 
pag.hotkey('ctrl', 'c')  

این screenshot() تابع

اگر می خواهید در هر موردی از صفحه اسکرین شات بگیرید، screenshot() تابع همانی است که شما به دنبال آن هستید. بیایید ببینیم چگونه می توانیم آن را با استفاده از آن پیاده سازی کنیم PyAutoGUI:

scree_shot = pag.screenshot() 

این یک را ذخیره می کند PIL شیء حاوی تصویر در یک متغیر.

با این حال، اگر می خواهید اسکرین شات را مستقیماً در رایانه خود ذخیره کنید، می توانید با آن تماس بگیرید screenshot به جای آن مانند این عمل کنید:

pag.screenshot('ss.png')

این اسکرین شات را در یک فایل ذخیره می کند، با نام فایل داده شده، روی کامپیوتر شما.

توابع confirm()، alert() و prompt().

آخرین مجموعه توابعی که در این آموزش قصد داریم به آنها بپردازیم توابع جعبه پیام هستند. در اینجا لیستی از عملکردهای جعبه پیام موجود در آن آمده است PyAutoGUI:

  1. Confirmation Box: اطلاعات را نمایش می دهد و دو گزینه به شما می دهد یعنی OK و Cancel
  2. جعبه هشدار: برخی از اطلاعات را نشان می دهد و تأیید می کند که آن ها را خوانده اید. یک دکمه را نشان می دهد OK
  3. Prompt Box: اطلاعاتی را از کاربر درخواست می کند و پس از وارد شدن، کاربر باید روی آن کلیک کند OK دکمه

اکنون که انواع آن را دیدیم، بیایید ببینیم چگونه می توانیم این دکمه ها را نمایش دهیم روی صفحه نمایش به همان ترتیب بالا:

pag.confirm("Are you ready?")
pag.alert("The program has crashed!")
pag.prompt("Please enter your name: ")

در خروجی، دنباله ای از جعبه های پیام را مشاهده خواهید کرد.

تایید:

شروع با Python PyAutoGUI

هشدار:

شروع با Python PyAutoGUI

سریع:

شروع با Python PyAutoGUI

نتیجه

در این آموزش روش استفاده از آن را یاد گرفتیم PyAutoGUI کتابخانه اتوماسیون در پایتون ما با صحبت در مورد پیش نیازهای این آموزش، نصب آن شروع کردیم process برای سیستم عامل های مختلف و به دنبال آن با برخی از عملکردهای کلی آن آشنا شوید. پس از آن، عملکردهای مخصوص حرکات ماوس، کنترل ماوس و کنترل صفحه کلید را مطالعه کردیم.

پس از دنبال کردن این آموزش، باید بتوانید از آن استفاده کنید PyAutoGUI برای خودکار کردن عملیات رابط کاربری گرافیکی برای کارهای تکراری در برنامه خود.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-20 03:19:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید