Avec Python, il est relativement facile d'exploiter directement des «fichiers» tels qu'Excel et des «applications» telles que des navigateurs Web.
Alors, avez-vous déjà voulu automatiser les opérations de la souris et la saisie au clavier? Vous pouvez penser cela.
Il existe de nombreuses applications et logiciels dans le monde. Si vous incluez des logiciels libres, il y a autant d'étoiles qu'il y en a. Comme prévu, Python ne prend pas en charge toutes ces applications. Il existe de nombreuses applications ** qui ne peuvent pas être utilisées directement avec Python.
Si vous souhaitez automatiser le travail dans une telle application, vous pouvez ** automatiser les opérations de la souris et du clavier **.
En premier lieu, lorsque les humains utilisent des applications, ils fonctionnent avec la souris et le clavier, donc si vous pouvez utiliser la souris et le clavier avec Python, vous devriez pouvoir tout faire fonctionner automatiquement en théorie (probablement).
Donc, dans cet article, je vais vous montrer comment utiliser la souris et le clavier en Python.
Pour utiliser la souris et le clavier en Python, utilisez une bibliothèque appelée ** PyAutoGUI **.
pyautogui ne doit pas être installé par défaut dans Anaconda, donc installons-le d'abord avec la commande pip.
pip install pyautogui
Si vous pouvez l'installer avec succès, importez-le.
python
import pyautogui
Cliquez avec le bouton gauche de la souris avec pyautogui.click ()
.
À ce stade, la question est de savoir où cliquer, mais vous pouvez spécifier la position du clic avec les trois modèles suivants.
une fonction | La description |
---|---|
pyautogui.click() | Position actuelle du curseur de la sourisCliquez sur |
pyautogui.click(x, y) | Coordonnées sur le moniteur(x, y)Position deCliquez sur |
pyautogui.click('button.png') | Image du bouton sur lequel vous souhaitez cliquerPrécisez et cliquez ici |
Je vais vous expliquer en détail.
pyautogui.click()
Cliquez sur la position actuelle du curseur de la souris.
Dans ce cas, utilisez les commandes pyautogui.moveTo ()
et pyautogui.move ()
pour déplacer le curseur de la souris, qui sera décrit plus loin, pour déplacer d'abord le curseur de la souris vers la position désirée puis pyautogui.click ()
. Je pense que ce sera.
python
# (100, 200)Déplacez le curseur de la souris sur la position de
pyautogui.moveTo(100,200)
#Cliquez sur
pyautogui.click()
pyautogui.click(x, y)
Cliquez sur la position des coordonnées (x, y) sur le moniteur. Quelles sont ces coordonnées (x, y)? Par exemple, si votre moniteur a une résolution de 1920 x 1080, le coin supérieur gauche est (0,0) et le coin inférieur droit est (1919, 1079).
0,0 X increases -->
+---------------------------+
| | Y increases
| | |
| 1920 x 1080 screen | |
| | V
| |
| |
+---------------------------+ 1919, 1079
(Réimprimé à partir du document officiel de PyAutoGui<https://pyautogui.readthedocs.io/en/latest/mouse.html>)
Puisque vous pouvez obtenir les coordonnées du curseur actuel de la souris avec pyautogui.position ()
Il est facile de vérifier les coordonnées en déplaçant la souris vers la position sur laquelle vous voulez cliquer et en exécutant pyautogui.position ()
.
python
#Vérifiez les coordonnées de la position sur laquelle vous souhaitez cliquer
print(pyautogui.position())
Résultat d'exécution
Point(x=207, y=528)
python
#Cliquez sur les coordonnées ci-dessus
pyautogui.click(207, 528)
pyautogui.click('button.png')
Spécifiez l'image du bouton sur lequel vous souhaitez cliquer ('button.png') et cliquez dessus. Selon la taille et la position de la fenêtre de l'application, les coordonnées de l'endroit sur lequel vous souhaitez cliquer peuvent ne pas toujours être les mêmes.
Dans un tel cas, vous pouvez directement cliquer sur la position en spécifiant ** l'image du lieu (bouton etc.) sur lequel vous voulez cliquer **.
Supposons que vous souhaitiez cliquer sur le ** "☆" figure ** dans l'application Windows "Paint".
Dans ce cas, découpez la partie ☆ en tant qu'image ('star.png').
python
#Cliquez sur la partie ☆
pyautogui.click('star.png')
La méthode de spécification de cette image est très pratique, mais dans certains cas, l'emplacement de l'image peut ne pas être reconnu. Il faut noter que ce n'est pas en 100 coups.
pyautogui.click ()
était un ** clic gauche normal **.
Si vous souhaitez effectuer un autre clic, comme un clic droit ou un double-clic, remplacez-le par la fonction correspondante comme indiqué ci-dessous.
Type de clic | une fonction |
---|---|
clic-droit | pyautogui.rightClick() |
Clic du milieu(Clic de roue) | pyautogui.middleClick() |
Double clic | pyautogui.doubleClick() |
Il existe deux types de mouvement du curseur de la souris. La différence est de savoir si la destination est spécifiée comme une position absolue ou une position relative.
une fonction | La description |
---|---|
pyautogui.moveTo(x,y) | Coordonnées sur le moniteur(x,y)Précisez et déplacez-vous là |
pyautogui.move(x,y) | X sur le côté de la position actuelle,Déplacer y verticalement |
pyautogui.moveTo(x,y) Spécifiez les coordonnées (x, y) sur le moniteur et accédez-y. Peu importe où vous êtes.
Vous pouvez également spécifier ** time to move ** comme troisième argument de moveTo ()
.
Si vous ne spécifiez pas une heure, elle se déplacera instantanément, mais vous pouvez vous déplacer lentement en spécifiant cette heure.
python
# (100,100)Déplacer vers la position
pyautogui.moveTo(100,100)
# (100,100)Déplacer vers la position de
pyautogui.moveTo(100,100,2)
pyautogui.move(x,y)
Déplace x horizontalement et y verticalement à partir de la position actuelle du curseur de la souris.
move ()
peut également spécifier le temps de déplacement.
python
#À partir de la position actuelle(100,100)Juste bouge
pyautogui.move(100,100)
#À partir de la position actuelle(100,100)Bougez simplement plus de 2 secondes
pyautogui.move(100,100,2)
Il existe deux types de glissement selon qu'il s'agit de la position absolue ou de la position relative de la destination. Pour le glissement, vous pouvez également spécifier ** time to drag ** dans le troisième argument.
une fonction | La description |
---|---|
pyautogui.dragTo(x,y) | Coordonnées sur le moniteur à partir de la position actuelle(x,y)Faites glisser vers |
pyautogui.drag(x,y) | X sur le côté de la position actuelle,Faites glisser y verticalement |
python
#À partir de la position actuelle(100,100)Faites glisser vers la position de
pyautogui.dragTo(100,100,2)
Utilisez pyautogui.write ()
pour saisir des caractères à partir du clavier.
En fait, cliquez sur la zone de texte, etc. où vous souhaitez saisir des caractères une fois,
Je pense que vous devrez activer le curseur de caractère puis lancer pyautogui.write ()
.
python
#Cliquez à l'endroit où vous souhaitez saisir des caractères
pyautogui.click(100, 100)
#Saisie de caractères
pyautogui.write('Hello world!')
Si, pour une raison quelconque, vous ne voulez pas entrer à une vitesse très élevée, vous pouvez spécifier le nombre de secondes entre les entrées de caractères avec ʻinterval = xx` dans l'argument pour laisser un espace entre les entrées de caractères.
python
#0 pour chaque caractère.Entrée toutes les 25 secondes
pyautogui.write('Hello world!', interval=0.25)
Veuillez noter que cette méthode ** ne peut pas saisir le japonais **! Donc, si vous voulez entrer le japonais, utilisez une autre méthode.
La méthode est ** Copiez et collez la chaîne de caractères que vous souhaitez entrer dans le presse-papiers. ** **
Utilisez ** pyperclip ** pour manipuler le presse-papiers. Voir ci-dessous pour plus de détails sur l'utilisation de pyperclip, mais ici je ne décrirai que le code.
[Automation] Utilisez le presse-papiers avec Python et collez le tableau dans Excel https://qiita.com/konitech913/items/83975332e395a387eace
python
import pyperclip
#Copiez la chaîne de caractères saisie dans le presse-papiers
pyperclip.copy('Bonjour le monde!')
# Ctrl+Coller avec v
pyautogui.hotkey('ctrl', 'v')
Utilisez pyautogui.press ()
si vous voulez simplement appuyer sur une touche au lieu de taper.
python
#Appuyez sur la "touche Entrée"
pyautogui.press('enter')
#Appuyez quatre fois sur la "touche de curseur gauche"
pyautogui.press(['left', 'left', 'left', 'left'])
Pour les ** raccourcis clavier ** tels que "Ctrl + C (coller)" et "Ctrl + Z (annuler)", spécifiez-les avec pyautogui.hotkey ()
.
python
# 「Ctrl+Z(annuler)」
pyautogui.hotkey('ctrl', 'z')
Enfin, utilisons les connaissances jusqu'à présent pour dessiner avec la «peinture» fournie avec Windows.
Modifiez la taille de la figure ☆, empilez-en 5 et entrez enfin le texte.
python
#Saisissez d'abord les coordonnées
print(pyautogui.position()) #Où vous voulez coller le texte
print(pyautogui.position()) #☆ position de départ de glisser
Résultat d'exécution
Point(x=300, y=285)
Point(x=476, y=566)
Une fois que vous connaissez les coordonnées, il est temps de commencer à dessiner.
python
import pyautogui
import pyperclip
#Cliquez une fois pour activer la fenêtre de peinture
pyautogui.click(732,22)
text_x=300
text_y=285
star_x=476
star_y=566
#☆ dessin
stride = 50 #Augmenter ☆ par pas
star_num = 5 #Nombre de ☆
pyautogui.click('star.png')
#☆ démarrer_Dessiner autant que num
for i in range(star_num):
pyautogui.moveTo(star_x-stride*i, star_y-stride*i, 1)
pyautogui.drag(50+stride*i*2, 50+stride*i*2, 1)
#Entrez du texte
pyautogui.click('text.png')
pyautogui.click(text_x, text_y)
pyperclip.copy('C'est comme une étoile Matriochka ...') #Copier le japonais dans le presse-papiers une fois
pyautogui.hotkey('ctrl', 'v') #coller
** Résultat d'exécution **
comment était-ce? Si vous pouvez maîtriser pyautogui, il semble que l'application sera efficace pour automatiser diverses applications.
Voici les autres séries d'automatisation que j'ai écrites. Si vous êtes intéressé, s'il vous plaît!
[Automation] Extraire le tableau en PDF avec Python https://qiita.com/konitech913/items/4ef70e1f7753c824b40f
[Automation] Lire des documents Word avec Python https://qiita.com/konitech913/items/c30236bdf47775535e2f
[Automation] Convertit le code Python en un fichier exe https://qiita.com/konitech913/items/6259f13e057bc25ebc23
[Automation] Envoyer des e-mails Outlook avec Python https://qiita.com/konitech913/items/51867dbe24a2a4272bb6
[Automation] Lire le courrier Outlook avec Python https://qiita.com/konitech913/items/8a285522b0c118d5f905
[Automation] Lire le courrier (fichier msg) avec Python https://qiita.com/konitech913/items/fa0cf66aad27d16258c0
[Automation] Utilisez le presse-papiers avec Python et collez le tableau dans Excel https://qiita.com/konitech913/items/83975332e395a387eace
Recommended Posts