توی این مقاله با یه کتابخانه خفن پایتون، برای کارهای مختلف آشنا میشیم!
pyautogui یک کتابخانه پایتون، اتوماسیون رابط کاربری گرافیکی بین پلتفرمی هست. برای کنترل ماوس و صفحه کلید، میتونیم از این کتابخانه استفاده کنیم!
نصب کتابخانه
برای نصب کتابخانه، میتونیم وارد cmd بشیم و دستور زیر رو وارد کنیم:
pip install pyautogui
مختصات x و y مورد استفاده در PyAutoGUI، مختصات مبدا 0، 0 در گوشه سمت چپ بالای صفحه هست. هر چقدر که به سمت راست بریم، مختصات x افزایش پیدا میکنه(مثل ریاضی) و هرچقدر پایین بیایم، y افزایش پیدا میکنه(برعکس ریاضی)
نکته: درحال حاضر، pyautogui فقط روی مانیتور اصلی کار میکنه. یعنی اگر مثلا دو مانیتور داشته باشیم، عملکرد درستی روی مانیتور دوم نداره.
-------
نکته: فشار های کیبورد که در pyautogui انجام میشه، بر روی صفحه ای که روی اون فوکوس هست، ارسال میشه. انگار که کلید فیزیکی رو فشار دادید!
برای وارد کردن کتابخانه به برنامه، اون رو مثل کد زیر، ایمپورت میکنیم:
import pyautogui
با استفاده از تابع size، میتونیم 2 عدد که به ترتیب طول و عرض صفحه هست رو دریافت کنیم(دقت کنید این اعداد برای شما میتونن متفاوت باشن):
>>> screenWidth, screenHeight = pyautogui.size()
>>> print(screenWidth, screenHeight)
1280 1024
با تابع onScreen هم میتونیم ببینیم نقطه مدنظر ما توی محدوده صفحه نمایش هست یا نه(اگر در محدوده بود، True و در غیر اینصورت False برمیگردونه).
>>> pyautogui.onScreen(0, 0)
True
با استفاده از تابع moveto میتونیم ماوس رو به مکانی که میخوایم، منتقل کنیم. پارامتر اول x و پارامتر دوم y هست. مثلا با کد زیر، میتونیم ماوس رو به وسط صفحه بیاریم!
pyautogui.moveTo(int(screenWidth/2), (screenHeight/2))
برای اینکار، میتونیم مدت زمان هم تعیین کنیم(پارامتر duration مربوط به مدت زمان هست):
pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad)
همچنین با تابع position میتونیم نقطه ای که ماوس روی اون قراره داره رو پیدا کنیم:
>>> pyautogui.position()
(241, 538)
با استفاده از تابع click میتونیم در مکانی که ماوس قرار داره، کلیک کنیم(چپ کلیک). همچنین میتونیم x و y محلی که قراره در اون کلیک انجام بشه هم به ترتیب به عنوان پارامتر های تابع بدیم:
pyautogui.click()
pyautogui.click(200, 220)
همنین تعداد کلیک های ماوس هم قابل کنترل هست:
pyautogui.click(clicks=5)
با استفاده از تابع move میتونیم نسبت به مکانی که ماوس قراره داره، حرکتی رو انجام بدیم. اگه قراره مثلا x یا y، ثابت بمونه، مقدار اون رو None قرار میدیم:
pyautogui.move(None, 10)
توی اینجا، ماوس 10 پیکسل میاد به سمت پایین
با استفاده از تابع doubleClick میتونیم عمل دابل کلیک رو انجام بدیم:
pyautogui.doubleClick()
با تابع write میتونیم در صفحه ای که فوکوس شده و شرایط نوشتن متن رو داره، تایپ کنیم. مثلا در نوتپد. پارامتر interval مربوط به مدت فاصله میان هر کاراکتر هست(بر حسب ثانیه):
pyautogui.write('MrPy!', interval=0.25)
کد های زیر به ترتیب مربوط به فشردن کلید، پایین نگه داشتن کلید، برداشتن کلید و فشردن چند کلید هست:
pyautogui.press('esc')
pyautogui.keyDown('shift')
pyautogui.keyUp('shift')
pyautogui.hotkey('ctrl', 'c')
با تسفاده از تابع dragTo میتونیم اینکار رو انجام بدیم:
pyautogui.dragTo(100, 100, 2, button="left")
با استفاده از تابع scroll میتونیم با دادن یک عدد(اگر مثبت باشه به سمت بالا و اگر منفی به سمت پایین) اسکرول کردن رو انجام بدیم:
pyautogui.scroll(100)
برای گرفتن اسکرین شات، از تابع screenshot استفاده میکنیم که میتونیم به عنوان پارامتر، آدرسی که فایل قراره اونجا سیو بشه رو بدیم یا اینکه با تابع save، عملیات ذخیره فایل رو انجام بدیم:
img = pyautogui.screenshot()
img.save('my_screenshot.png')
img2 = pyautogui.screenshot('my_screenshot2.png')
اگر بخوایم از یک بخش صفحه، اسکرین شات بگیریم، میتونیم به پارامتر region، یک تاپل شامل 4 عضو که 2 عضو اول x و y و دو عضو بعدی طول و عرض مستطیل هستند رو بدیم:
pyautogui.screenshot(region=(0, 0, 500, 500))
pyautogui برای اینکار از کتابخانه pillow استفاده میکنه
اگر بخوایم هشداری رو نمایش بدیم، میتونیم از کد زیر استفاده کنیم:
pyautogui.alert(text="python is great!", title="python", button="ok")
اگر هم خواستید چند تا دکمه بزارید، میتونید داخل یک لیست نام ها رو تعریف کنید.
دریافت متن در پیغام
از تابع prompt استفاده میکنیم که میتونیم مقادیر متن و عنوان و مقدار پیشفرض رو وارد کنیم:
pyautogui.prompt(text="", title="" , default="")
برای دریافت پسورد هم میتونیم به شکل زیر عمل کنیم(شما میتونید مقدار mask رو هر چیز دیگه ای بزارید):
pyautogui.password(text="", title="", default="", mask="*")
برای اینکار میشه از تابع pixel استفاده کرد که رنگ اون پیکسل رو به صورت rgb برمیگردونه:
>>> pyautogui.pixel(500, 500)
RGB(red=150, green=275, blue=215)
این مقاله هم به همین زودی تموم شد :(
اگه سوالی داشتید توی دیدگاه مطرح کنید
فراموش نشه :)
باهاش میشه کیلاگر ساخت XD
عرفان سلیمی: اتفاقا توی مقاله بعدی، کتابخانه keyboard که برای این کار هم استفاده میشه، آموزش میدیم!
محمدصدرا عبدالعلی زاده: مراقب فتا باش XD
عرفان سلیمی: :)