Gereksinimler ve Ön Hazırlık
PyAutoGUI ile çalışmaya başlamadan önce Python'un sisteminizde kurulu olması gerekir. 2026 standartlarına uygun olarak Python 3.12 veya üzeri bir sürüm kullanmanızı öneririz. Kütüphaneyi kurmak için terminal veya komut satırınızı açarak aşağıdaki komutu çalıştırmanız yeterlidir:
pip install pyautogui
Kurulum tamamlandıktan sonra, kütüphanenin doğru çalışıp çalışmadığını anlamak için basit bir "fail-safe" (güvenli çıkış) mekanizmasını anlamak önemlidir. PyAutoGUI, fareyi ekranın sol üst köşesine (0,0 koordinatı) hızla götürdüğünüzde tüm işlemleri durduracak bir güvenlik önlemine sahiptir. Bu, sonsuz döngüye giren veya hatalı çalışan bir makroyu anında durdurmanızı sağlar.
Fare Kontrolü ve Koordinat Sistemi
Fare hareketlerini otomatize etmek için ekranın koordinat sistemini bilmeniz gerekir. Ekranın sol üst köşesi (0,0) noktasıdır. X ekseni sağa doğru, Y ekseni ise aşağı doğru artar. İlk olarak, farenin mevcut konumunu öğrenmek ve belirli bir noktaya hareket ettirmek için şu kodu kullanabilirsiniz:
import pyautogui
# Farenin mevcut konumunu al
konum = pyautogui.position()
print(f"Mevcut fare konumu: {konum}")
# Fareyi belirli bir koordinata 1 saniyede taşı
pyautogui.moveTo(500, 500, duration=1)
Yukarıdaki kod, farenin o anki X ve Y değerlerini ekrana yazdırır ve ardından fareyi 500x500 piksel noktasına yumuşak bir geçişle taşır. duration parametresi, hareketin ne kadar süreceğini saniye cinsinden belirler.
Tıklama ve Sürükleme İşlemleri
Fare hareketlerinden sonra en çok ihtiyaç duyulan işlem tıklamadır. PyAutoGUI, sol, sağ ve orta tuş tıklamalarını destekler. Ayrıca, bir öğeyi tutup başka bir yere sürüklemek için dragTo fonksiyonu kullanılır.
import pyautogui
# Belirli bir koordinata tıkla
pyautogui.click(x=200, y=300)
# Çift tıklama yap
pyautogui.doubleClick()
# Bir öğeyi sürükle (Başlangıçtan bitişe)
pyautogui.dragTo(400, 400, duration=0.5)
Bu komutlar, özellikle form doldurma veya dosya taşıma gibi işlemlerde oldukça etkilidir. click fonksiyonu içerisindeki button parametresi ile 'right' veya 'middle' değerlerini kullanarak sağ veya orta tık işlemlerini de gerçekleştirebilirsiniz.
Klavye Makrosu Oluşturma
Klavye otomasyonu, metin girişi yapma veya kısayol tuşlarını tetikleme gibi işlemleri kapsar. write fonksiyonu ile metin yazabilir, press veya hotkey fonksiyonları ile özel tuşları kullanabilirsiniz.
import pyautogui
# Metin girişi yap
pyautogui.write('Merhaba Dunya!', interval=0.1)
# Enter tuşuna bas
pyautogui.press('enter')
# Kısayol tuşlarını kullan (Örn: Ctrl + C)
pyautogui.hotkey('ctrl', 'c')
interval parametresi, her karakter arasında bekleme süresi ekleyerek yazma işlemini daha "insansı" hale getirir. hotkey fonksiyonu ise karmaşık tuş kombinasyonlarını tek satırda yönetmenizi sağlar.
Görüntü İşleme ile Otomasyon
Bazen koordinatlar ekran çözünürlüğüne bağlı olarak değişebilir. Bu durumda, ekrandaki bir butonu veya simgeyi görsel olarak bulup tıklamak daha güvenilirdir. Bunun için locateOnScreen fonksiyonu kullanılır.
import pyautogui
# Ekranda bir resim dosyası ara
buton = pyautogui.locateOnScreen('buton_resmi.png', confidence=0.8)
if buton:
x, y = pyautogui.center(buton)
pyautogui.click(x, y)
else:
print("Buton ekranda bulunamadı.")
confidence parametresi, görsel eşleşme hassasiyetini belirler (0 ile 1 arası). Bu özelliği kullanabilmek için sisteminizde opencv-python kütüphanesinin kurulu olması gerektiğini unutmayın.
Karşılaştırma: Yöntemler ve Kullanım Alanları
| Yöntem | Avantajı | Dezavantajı |
|---|---|---|
| Koordinat Bazlı | Çok hızlı ve basit | Ekran çözünürlüğü değişince bozulur |
| Görsel Bazlı | Dinamik ve esnek | İşlemci yükü daha fazladır |
| Klavye Kısayolları | Doğrudan sistem komutu | Uygulama odağı gerektirir |
Kritik Güvenlik Uyarısı: Otomasyon scriptlerini çalıştırırken, bilgisayarınızın kontrolünü geçici olarak script'e devrettiğinizi unutmayın. Hatalı bir döngü sistemin kilitlenmesine neden olabilir. Her zaman "fail-safe" mekanizmasını aktif tutun ve script'i çalıştırmadan önce tüm kritik pencereleri kaydedin. Bu kodlar eğitim amaçlıdır; yetkisiz erişim veya etik dışı kullanım sorumluluğu tamamen kullanıcıya aittir.
Sıkça Sorulan Sorular
PyAutoGUI neden tıklama yapmıyor?
Genellikle uygulama yönetici izinlerine sahip olmadığı için tıklamalar engellenir. Scriptinizi yönetici yetkileriyle çalıştırmayı deneyin.
Ekran çözünürlüğü değişimini nasıl yönetirim?
Görsel tanıma (locateOnScreen) yöntemini kullanarak koordinat bağımlılığından kurtulabilirsiniz.
Çok hızlı çalışan makroları nasıl yavaşlatırım?
pyautogui.PAUSE = 1.0 komutunu kodunuzun en başına ekleyerek her işlemden sonra 1 saniyelik otomatik bekleme süresi tanımlayabilirsiniz.
Farklı işletim sistemlerinde çalışır mı?
Evet, PyAutoGUI Windows, macOS ve Linux üzerinde sorunsuz çalışır.
Sonsuz döngüden nasıl kurtulurum?
Fareyi ekranın sol üst köşesine (0,0) hızla sürükleyin; bu, PyAutoGUI'nin yerleşik "fail-safe" tetikleyicisidir.
İleri Seviye Hata Yönetimi ve Loglama
Otomasyon projeleriniz karmaşıklaştıkça, scriptin nerede hata verdiğini anlamak kritik bir hale gelir. PyAutoGUI ile çalışırken, özellikle ekran görüntüsü bulma (locateOnScreen) gibi işlemlerde, aranan öğe ekranda bulunamadığında programın çökmesini engellemek için try-except bloklarını ve logging modülünü kullanmalısınız.
Aşağıdaki örnekte, bir butonun bulunamaması durumunda programın durması yerine hata kaydı oluşturulmasını sağlayan yapı gösterilmektedir:
import pyautogui
import logging
# Loglama ayarları
logging.basicConfig(filename='otomasyon.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s: %(message)s')
def tikla_ve_logla(resim_yolu):
try:
konum = pyautogui.locateOnScreen(resim_yolu, confidence=0.8)
if konum:
pyautogui.click(konum)
logging.info(f"{resim_yolu} başarıyla tıklandı.")
else:
logging.warning(f"{resim_yolu} ekranda bulunamadı!")
except Exception as e:
logging.error(f"Beklenmedik hata: {e}")
tikla_ve_logla('buton.png')
Performans Optimizasyonu: Görsel Arama Sürelerini Kısaltma
PyAutoGUI'nin locateOnScreen fonksiyonu, tüm ekranı taradığı için işlemciyi yorabilir ve makronun yavaş çalışmasına neden olabilir. Performansı artırmak için "Region" (Bölge) parametresini kullanarak tarama alanını daraltmak en etkili yöntemdir.
Bölgesel Tarama ile Hız Kazanma
Tüm ekranı taramak yerine, sadece ilgili öğenin bulunma ihtimalinin olduğu koordinatları belirleyerek arama süresini milisaniyelere indirebilirsiniz.
# Tüm ekran yerine sadece belirli bir koordinat aralığında arama yapın
# (x, y, genişlik, yükseklik)
bolge = (0, 0, 500, 500)
konum = pyautogui.locateOnScreen('hedef.png', region=bolge, confidence=0.9)
if konum:
pyautogui.click(konum)
else:
print("Belirtilen bölgede hedef bulunamadı.")
Ayrıca, grayscale=True parametresini ekleyerek renk analizini devre dışı bırakmak, arama hızını yaklaşık %30 oranında artıracaktır. Ancak bu durum, renklerin benzer olduğu durumlarda doğruluk payını düşürebilir; bu nedenle kritik işlemlerde dikkatli kullanılmalıdır.
Alternatif: PyDirectInput ile Oyun Otomasyonu
PyAutoGUI, standart Windows API çağrılarını kullandığı için bazı modern oyunlarda veya yüksek yetki gerektiren (DirectX tabanlı) uygulamalarda çalışmayabilir. Bu tür durumlarda pydirectinput kütüphanesi daha kararlı bir çözüm sunar.
Neden PyDirectInput?
- Doğrudan donanım seviyesinde giriş simülasyonu yapar.
- DirectX kullanan oyunlarda klavye ve fare girdilerini daha iyi iletir.
- PyAutoGUI ile aynı sözdizimine sahiptir, bu sayede geçiş yapmak oldukça kolaydır.
# Kurulum: pip install pydirectinput
import pydirectinput
# PyAutoGUI yerine kullanılabilir
pydirectinput.keyDown('w')
pydirectinput.press('space')
pydirectinput.keyUp('w')
Bu yöntemleri birleştirerek, hem hızlı hem de hata payı düşük, profesyonel seviyede otomasyon projeleri geliştirebilirsiniz.
Sonuç
Python ile PyAutoGUI kullanarak fare ve klavye makrosu oluşturmak, dijital verimliliğinizi artırmak için güçlü bir araçtır. Bu rehberde, temel hareketlerden görsel tabanlı otomasyona kadar birçok yöntemi inceledik. Başarılı bir otomasyon için küçük adımlarla başlayıp, hata yönetimi (try-except blokları) ekleyerek scriptlerinizi daha dayanıklı hale getirebilirsiniz. Bir sonraki adım olarak, verileri bir Excel dosyasından okuyup bu verileri web formlarına otomatik aktaran daha kapsamlı bir proje geliştirmenizi öneririz.

Yorumlar (0)
Yorum Yaz