PyAutoGUI ile Klavye Okuma ve Kontrol, otomasyon ve görsel tanıma işlemleri için kullanılmaktadır. Aynı zamanda bu tür işlemleri insan müdahalesi olmadan çalışabilen yani otomasyon yazılımı yazmamıza yardımcı olan bir Python kütüphanesidir.
Bu kütüphaneyi kullanarak;
- fare hareketlerini görme,
- fare istenilen konumda hareket ettirme,
- klavye tuşlarını okuma,
- ekran görüntüsü alma ve kaydetme,
- ekranda istenilen yere tıklama,
- mesaj kutusu oluşturma,
- ekran boyutunu yatay ve dikey olarak bulma
ve tıpkı bunlar gibi birçok işlemi gerçekleştirebilirsiniz.
Kurulum için Python terminaline aşağıdaki komut yazın;
pip install pyautogui
İçindekiler Tablosu
PyAutoGui Komutları
PyAutoGui Fare Kontrolü
import pyautogui
print(pyautogui.position()) ## Point(x=1131, y=667)
Fare imlecinin ekran üzerinde nerede olduğunu, konumunu pixel olarak verir.
Bilgisayar ekranı koordinat sistemi gibi x ve y düzlemlerinden oluşur. Ekranın sol üst köşesi orijin yani (0,0) noktası olup x sağa doğru artar y ise aşağı doğru artar.
pyautogui.moveTo(x, y)
pyautogui.moveTo(None, y)
pyautogui.moveTo(x, None)
Fare imlecini ekran üzerinde istenilen x ve y koordinatlarına anında taşır. Eğer imlecin o anki konumundan sadece x veya y üzerinden hareket ettirmek isterseniz, sabit kalmasını istediğimiz düzlemine “None” yazabilirsiniz.
pyautogui.moveTo(x, y, duration)
Eğer anında değilde belirli bir süre içinde gitmesini istiyorsanuz farenin taşınmasını istediğimiz koordinatlardan sonra istenilen süre(duration) belirtin.
pyautogui.moveRel(x, y, duration)
pyautogui.moveRel(-x, y, duration)
pyautogui.moveRel(-x, -y, duration)
Fare imlecini olduğu konumdan birkaç piksel yer değişmesi için moveRel() fonksiyonu kullan. Sağa ve aşağı yer değiştirmesini istersek artı, sola ve yukarı ise eksi değer yazılılır. Aynı şekilde yine istenilirse süre eklenebir.
Buraya kadar olan komutlar farenin konumu ile ilgiliydi şimdi ise farenin tıklanmasıyla ilgili komutlara bakalım. İlk komut olarak “click()” fonksiyonunu inceleyeceğiz.
pyautogui.click(x, y)
Bu fonksiyon ile fare imleci x ve y koordinatına gider ve orada farenin sol butonuna bir kere tıklar. Eğer herhangi bir koordinat verilmezse fare imlecinin olduğu yerde tıklama yapar.
pyautogui.click(clicks=a)
pyautogui.click(x, y, clicks=a)
pyautogui.click(x, y, clicks=a, interval=süre)
Birden fazla tıklama yapmak için parantez içindeki “a” yerine tıklanmasını istediğiniz sayıyı yazınız. Aynı şekilde burada da koordinat belirtebilirsiniz.
Tıklamaların arasında belirli bir süre beklenmesini isterseniz “interval” yazılarak süreyi belirtiniz.
pyautogui.click(button=”right”, clicks=a)
pyautogui.click(x, y, button=”right”, clicks=a)
pyautogui.click(button=”right”, clicks=a, interval=süre)
Farede sağ butona tıklamak için yukarıdaki gibi “button” eklenir.
pyautogui.doubleClick(x, y)
pyautogui.rightClick(x, y)
pyautogui.scroll(amount)
Belirtilen koordinatta; çift tıklamak için “doubleClick()” , sağ tıklamamk için “rightClick()” fonksiyonları kullanılabilir.
Farenin tekerleğini aşağı yukarı kaydırmak için “scroll()” fonksiyonu kullanılır. Burada “amount” parametresi kaydırmak istenilen miktarı belirtir. Bunun yanında pozitif bir değer verirseniz tekerleği yukarı, negatif bir değer verirseniz aşağı kaydırır. Tabi bu hareket her uygulamada farklı algılanabilir.
Fareye tıklanmak dışında basılı tutulup bırakılma gibi eylemlerde yapılabilir. Bunun için aşağıdaki fonksiyonlar kullanılır.
pyautogui.mouseDown(x, y)
pyautogui.mouseUp(x, y)
pyautogui.mouseUp(button, x, y)
Burada “mouseDown()” ile butona basar ve “mouseUp()” ile de butona basmayı bırakır. Eğer koordinat verirseniz, verdiğiniz konuma geldikten sonra basar veya bırakır.
PyAutoGui Klavye Kontrolü
pyautogui.typewrite(“metin”)
pyautogui.typewrite(“metin”, interval=süre)
Belirtiğiniz metindeki karaktere klavye tuşlarına basarak yazar. Bunun yanında her karakter arasında bekleme olmasını isterseniz de “interval” parametresi ile süreyi belirtebilirsiniz.
pyautogui.press(“karakter”)
pyautogui.press([“karakter”, “karakter”])
Tek bir karaktere basmak için press() fonksiyonunu kullanırız. Ayrıca “typewrite()” fonksiyonunda “ctrl”, “win”, “left” gibi özel karakterlere basamazken “press()” fonksiyonunu kullanarak basabilirsiniz. Birden fazla karaktere basmak istersek yazdığımız her karakter arasına virgül yazılır.
pyautogui.hotkey(“karakter”, ”karakter”)
Klavye kısayollarını (“ctrl+a”, “ctrl+shift+esc”) kullanabilmek için kullanılan bir fonksiyondur. Kısayollarını kullanmak için bir başka yol olarak “keyDown()” tuşa basmak, “keyUp()” basılan tuşu bırakmak olarak kullanılan fonksiyonlarda kullanılabilir.
pyautogui.keyDown(“karakter”)
pyautogui.keyUp(“karakter”)
PyAutoGui Ekran komutları
Ekran_goruntusu = pyautogui.screenshot()
Ekran_goruntusu.save(“ekran_görüntü_adı”)
Ekran görüntüsü almaya yarar ve görüntüyü aldıktan sonra onu kaydetmek için “save()” fonksiyonu kullanılır. Burada ekran görüntüsü Python komut sisteminde yapıldığında python’nın yüklü olduğu dizine kaydedilir.
Ekran_goruntusu = Pyautogui.screenshot(“ekran_görüntü_adı”, region(x, y, width, height)
Ekranda belirli bir kısmın görüntüsünü almak isterseniz “region” parametresini kullan. Bu parametrede x, y değerlerine görüntüyü almaya başlayacağı noktanın koordinatı yazılır sonra x noktasından sağa doğru ne kadar genişliği, y noktasından da ne kadar aşağı doğru yani yüksekliği belirtilir.
print(pyautogui.size())
Bu fonksiyon ile ekranın boyutunu bulunur. Ekran boyutu bilgisayardan bilgisayara farklılık gösterir. Bu komutta genişliği ve yüksekliği ayrı ayrı yazdırmak istersek;
genislik, yukseklik= pyautogui.size()
print(“ekran genişliği= ”, genislik)
print(“ekran yüksekliği= ”, yukseklik)
PyAutoGui Mesaj Kutusu Komutları
pyautogui.alert(text=”Metin”, title=”başlık”)
pyautogui.alert(text=”Metin”, title=”başlık”, button=”buton_adı”)
Başlığı, butonu ve içinde yazdığımız metin olan basit bir uyarı mesaj kutusu gönderir. Bu mesaj kutusuna buton adı eklemezseniz program buton adını “ok” olarak tanımlar. Buton adına tıklayarak mesaj kutusunu kapatabilirsiniz.
pyautogui.confirm(text=”Metin”, title=”başlık”)
pyautogui.confirm(text=”Metin”, title=”başlık”, buttons=[”buton_adı”, “buton_adı”])
Bu fonksiyon ile bir onay mesaj kutusu oluşturulur. Burada metin olarak bir metin, talimat veya soru sorulur ve evet yada hayır butonlarından birini seçmesini ister.
pyautogui.password(text=”Metin”, title=”başlık”, mask=”*”)
Dışarıdan gizli bir metin girilmek istediğimizde “mask” parametresi, girilen metni istenilen karakter ile şifrelemek için kullanmalısın.
pyautogui.prompt(text=”Metin”, title=”başlık”)
Dışarıdan metin girişi olan bir mesaj kutusu istersek “prompt()” fonksiyonunu kullanırız.
Metin girildikten sonra yazdırılmasını istersek “print()” fonksiyonu kullan.
Metin=pyautogui.prompt(text=”Metin”, title=”başlık”)
print(Metin)
Diğer Komutlar
Yazdığımız kodu belirttiğimiz süre kadar çalışmasını durdurmak için kullanınız. Bu fonksiyon ile kodun çalışma süresini attırmak ya da gerek duyulduğunda bazı komutlar arasına yazılarak bekleme ihtiyacında kullanabilirsin.
pyautogui.FAILSAFE
Otomasyon çalışırken olabilecek herhangi bir beklenmedik durumda otomasyonun çalışmasını durdurmak ya da bekletmek için kullanmalısın.
Özet
import pyautogui
#----Fare Komutları----
print(pyautogui.position()); # Fare imlecinin ekrandaki konumunu yazdırır
pyautogui.moveTo(0,0,6) # 6 saniyede fareyi (0,0) noktasına taşır
pyautogui.moveRel(0,0,6) # Fare imlecini olduğu noktadan 6 saniyede fareyi (0,0) noktasına taşır
pyautogui.click(427,258); # Ekranda (427,258) noktasına gider ve farede bir defa sol tıklar
pyautogui.doubleClick(427,258); # Ekranda (427,258) noktasına gider ve farede 2 defa sol tıklar
pyautogui.rightClick(427,258); # Ekranda (427,258) noktasına gider ve farede 2 defa sağ tıklar
pyautogui.scroll(-2591); # Farenin tekerleğini bir miktar aşağı kaydırır
pyautogui.mouseDown(427,258); # Ekranda (427,258) noktasına basar
pyautogui.mouseUp(427,258); # Ekranda (427,258) noktasına basmayı bırakır
#----Klavye Komutları----
pyautogui.typewrite("Hacktorx",interval=1) # Her karakter arasında 1sn bekleyerek ekrana Hacktorx yazdırır
print(pyautogui.press(["ctrl","a"])); # Klavye tuşlarında basarak ctrl ve a tuşlarına tıklar
pyautogui.hotkey("ctrl","a"); # Klavye tuşlarında basarak ctrl+a kısayolunu çalıştırır
#----Ekran Komutları----
Ekran_goruntusu = pyautogui.screenshot() # Ekran görüntüsü alır
Ekran_goruntusu.save("ekran_görüntü_1") # Ekran görüntüsünü kaydeder
print(pyautogui.size()); # Ekran boyutunu yazdırır
#----Mesaj Kutusu İşlemleri----
pyautogui.alert( text="Yine ziyaret etmeyi unutmayınız", title="Hacktorx") # Uyarı mesaj kutusu gösterir
pyautogui.confirm(text="Sevdiniz mi?", title="Hacktorx", buttons=["Evet","Tabii ki"]) # Onay mesaj kutusu gösterir
pyautogui.password(text="şifre", title="Hacktorx", mask="*") # Yazılan metnin karakterlerini "*" olarak gösterir
pyautogui.prompt(text="Düşünceleriniz", title="Hacktorx") #Dışarıdan metin girişi olan mesaj kutusu gösterir
#----Diğer Komutlar----
pyautogui.sleep(3) # Kodun çalışmasını 3sn bekletir
pyautogui.FAILSAFE # Kod çalışırken hata oluşması durumunda kodun çalışmasını durdurur
PyAutoGUI ile ilgili dökümantasyonun tamamına buradan ulaşabilirsiniz.
Aklınıza takılan sorular için [email protected] mail adresinden bana ulaşıp ve diğer yazılarımı ise buraya tıklayarak okuyabilirsin.
Edanur Erdoğan
HacktorX YazarıMerhaba ben Edanur Adli Bilişim Mühendisliği yanında Görsel İletişim Tasarımı bölümünde de eğitim görmekteyim. Kendimi Python dilinde geliştirmekteyim.