PyAutoGUI : pilote ta souris et ton clavier depuis un script Python

De quoi avez-vous besoin

Version de Python

3.x

Packages

  • {"nom": "PyAutoGUI", "version": "0.9.54"}

Difficulté

Débutant

Tu passes ta journée à déplacer la souris, cliquer, copier des valeurs d'un tableur vers un formulaire, répéter les mêmes gestes des dizaines de fois ? PyAutoGUI est le module Python qui fait tout ça à ta place. Il contrôle directement ta souris et ton clavier : position du curseur, clics, glisser-déposer, frappe de texte, raccourcis clavier, molette, captures d'écran. En clair, c'est un petit robot de bureau piloté par un script. Pas d'IA, pas de cloud : juste du Python qui parle à ton système comme tu le ferais toi-même.

Un avertissement avant de foncer : un script qui bouge ta souris tout seul prend le contrôle de ta machine le temps qu'il tourne, et peut faire des dégâts s'il est mal écrit. Garde toujours le frein d'urgence activé (on y revient à la fin) et teste sur une machine ou une session dédiée, pas au milieu de ta journée de travail.

Étape 1 : installer et repérer ton écran

bash
pip install pyautogui

PyAutoGUI raisonne en pixels. Avant de déplacer quoi que ce soit, tu dois connaître la taille de ton écran et le système de coordonnées : le point (0, 0) est le coin en haut à gauche, les x augmentent vers la droite, les y vers le bas.

python
import pyautogui

largeur, hauteur = pyautogui.size()
print(f"Ton écran fait {largeur} x {hauteur} pixels")

x, y = pyautogui.position()
print(f"La souris est actuellement en ({x}, {y})")

Étape 2 : déplacer la souris et cliquer

moveTo() amène le curseur à une position absolue en pixels. Le paramètre duration crée un déplacement fluide, ce qui évite qu'un logiciel ne voie arriver un saut trop brutal. Ensuite, click() appuie et relâche le bouton gauche. Pour la molette, scroll() prend une valeur négative pour descendre et positive pour monter.

python
import time

pyautogui.moveTo(500, 300, duration=0.5)   # glisse jusqu'au point (500, 300)
pyautogui.click()                           # clic gauche
pyautogui.doubleClick()                     # double clic
pyautogui.rightClick()                      # clic droit
pyautogui.scroll(-3)                        # molette vers le bas

time.sleep(1)

# Glisser-déposer : maintenir le clic, bouger, relâcher
pyautogui.moveTo(200, 200, duration=0.3)
pyautogui.dragTo(600, 400, duration=0.8)    # tire un élément d'un point à l'autre

Étape 3 : faire parler le clavier

write() tape une chaîne de caractères comme si tu la saisissais, caractère par caractère. press() appuie sur une touche précise (enter, tab, escape...). hotkey() combine plusieurs touches pour reproduire les raccourcis du style Ctrl+C.

python
pyautogui.click()                 # place d'abord le curseur dans un champ de texte
pyautogui.write("Bonjour depuis Python !", interval=0.05)

pyautogui.press("enter")          # valide la saisie
pyautogui.hotkey("ctrl", "a")     # sélectionne tout
pyautogui.hotkey("ctrl", "c")     # copie
pyautogui.hotkey("ctrl", "v")     # colle

Étape 4 : retrouver un bouton à l'écran

Coder des coordonnées en dur, c'est fragile : un seul changement de fenêtre et tout tombe à l'eau. La méthode de pro consiste à capturer l'image du bouton que tu veux cliquer, puis à demander à PyAutoGUI de la retrouver n'importe où à l'écran.

python
# Capture d'abord le bouton avec pyautogui.screenshot(),
# enregistre-le dans bouton.png, puis :
position = pyautogui.locateCenterOnScreen("bouton.png", confidence=0.8)

if position:
    pyautogui.click(position)
    print("Bouton cliqué !")
else:
    print("Bouton introuvable")

Le paramètre confidence tolère les petites différences visuelles (anti-aliasing, léger changement d'échelle). Pour l'utiliser, il faut OpenCV : pip install opencv-python. Sans lui, l'image doit correspondre pixel par pixel, ce qui est rarement le cas en pratique. Au passage, pyautogui.screenshot() capture tout l'écran et renvoie une image PIL : pratique pour déboguer ce que ton script a réellement vu.

Étape 5 : le frein d'urgence, non négociable

Un script qui contrôle ta machine doit toujours pouvoir être stoppé, même quand tout part en vrille. PyAutoGUI a un garde-fou intégré : si tu pousses le curseur dans le coin tout en haut à gauche de l'écran, le script s'arrête immédiatement en levant une exception. Ne le désactive jamais.

python
pyautogui.FAILSAFE = True        # activé par défaut, garde-le ainsi
pyautogui.PAUSE = 0.3            # pause automatique entre chaque action

# Le coin en haut à gauche (0, 0) = arrêt d'urgence immédiat

PyAutoGUI transforme n'importe quelle tâche répétitive en script : remplir un formulaire, exporter un rapport depuis un vieux logiciel, enchaîner des captures d'écran, automatiser un test d'interface. Combine-le avec ce que tu as déjà sous la main, par exemple un script qui surveille un dossier et déclenche une série de clics dès qu'un fichier apparaît, et tu tiens un vrai petit automate de bureau.

Commence petit : un script qui ouvre un fichier, tape trois lignes et sauvegarde. Garde le frein d'urgence, ajoute des time.sleep() entre les étapes critiques, et fais bosser ta souris à ta place.

K

Auteur

Krugz

Développeur fullstack

Développeur fullstack qui tente, tant bien que mal, de suivre l'actualité de l'IA au milieu d'une marée d'informations imbuvables et des milliers d'outils et de modèles qui sortent chaque jour.