Outils pour utilisateurs

Outils du site


issue151:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision Les deux révisions suivantes
issue151:python [2019/12/07 09:04]
auntiee
issue151:python [2019/12/07 10:11]
auntiee
Ligne 91: Ligne 91:
 Screen width: 1920 and height 1080** Screen width: 1920 and height 1080**
  
-Maintenant que pyautogui est installée, voyons voir ce qu'elle peut faire, ou, comme on le dit aux États-Unis, « kick the tires and see what this puppy can do ». Évidemment, nous voudrions utiliser le programme pour déplacer le curseur de la souris et voir ce qui se passe. Cependant, en premier, nous regarderons ce que dit PyAutoGui sur la taille de notre écran. Bien que nous puissions connaître ce que sont ces valeurs, assurons-nous que ce que nous savons colle avec ce que la bibliothèque pense et ajustons nos estimations en conséquence.+Maintenant que pyautogui est installée, voyons voir concrètement ce qu'elle peut faire, ou, comme on le dit aux États-Unis, « kick the tires and see what this puppy can do » (Je sais très bien qu'il sera difficile de le traduire en d'autres langues et vous prie de me pardonner d'avance.Évidemment, nous voudrions utiliser le programme pour déplacer le curseur de la souris et voir ce qui se passe. Cependant, en premier, nous regarderons ce que dit PyAutoGui sur la taille de notre écran. Bien que nous puissions connaître ce que sont ces valeurs, assurons-nous que ce que nous savons colle avec ce que la bibliothèque pense et ajustons nos estimations en conséquence.
  
 Dans le shell Python, saisissez Dans le shell Python, saisissez
Ligne 113: Ligne 113:
 **Before we go any further, one of the things that Mr. Sweigart mentions early in the article is that there is a way to cause the program to abort just in case something goes wrong. He says "PyAutoGUI also has a fail-safe feature. Moving the mouse cursor to the upper-left corner of the screen will cause PyAutoGUI to raise the pyautogui.FailSafeException exception." This is a very good thing to know. Not only does the exception get raised when the mouse cursor gets moved to the upper-left corner of the screen manually, the same thing happens in any corner, as well as when our program causes it to happen. So when we create our first demonstration, we need to take this into consideration. We'll start by using the 'moveTo()' method of the library. For this, we need to provide the x and y coordinates we wish the mouse cursor to move to as well as a duration. I'm going to assume that you already know that the upper-left corner of your screen would be 0,0 and the lower-right corner would be width, height, or in my case 1920, 1080. Mr. Sweigart suggests a duration of 0.25 seconds, but I want to see it happen a bit more slowly, so I will use a duration of 0.75 seconds.** **Before we go any further, one of the things that Mr. Sweigart mentions early in the article is that there is a way to cause the program to abort just in case something goes wrong. He says "PyAutoGUI also has a fail-safe feature. Moving the mouse cursor to the upper-left corner of the screen will cause PyAutoGUI to raise the pyautogui.FailSafeException exception." This is a very good thing to know. Not only does the exception get raised when the mouse cursor gets moved to the upper-left corner of the screen manually, the same thing happens in any corner, as well as when our program causes it to happen. So when we create our first demonstration, we need to take this into consideration. We'll start by using the 'moveTo()' method of the library. For this, we need to provide the x and y coordinates we wish the mouse cursor to move to as well as a duration. I'm going to assume that you already know that the upper-left corner of your screen would be 0,0 and the lower-right corner would be width, height, or in my case 1920, 1080. Mr. Sweigart suggests a duration of 0.25 seconds, but I want to see it happen a bit more slowly, so I will use a duration of 0.75 seconds.**
  
-Avant d'aller plus loin, une des choses que M. Sweigart mentionne dès le début de l'article, c'est qu'il existe une manière de faire avorter le programme juste au cas où quelque chose se passe mal. Il dit « PyAutoGUI a aussi une fonctionnalité de sauvetage en cas de défaut. Le déplacement du curseur de la souris dans le coin en haut à gauche entraînera le déclenchement de l'exception pyautogui.FailSafeException. » C'est une excellente chose à savoir. Non seulement l'exception est activée quand le curseur est manuellement déplacé dans le coin en haut à gauche, mais la même chose arrive dans n'importe quel angle, et aussi par une demande du programme. Aussi, quand nous créerons notre première démonstration, nous devrons la prendre en considération. Nous commecerons en utilisant la méthode « moveTo() » de la bibliothèque. Pour cela, nous avons besoin de fournir les coordonnées x et y d'où nous voulons que le curseur de la souris aille se placer ainsi que la durée. Je vais partir du principe que vous savez déjà que le coin en haut à gauche de votre écran est 0,0 et que le coin en bas à droite est width, height (ou dans mon cas, 1920, 1080). M Sweigart suggère une durée de 0,25 secondes, mais je voudrais voir l'action se dérouler un peu plus lentement ; aussi, j'utiliserai une durée de 0,75 secondes.+Avant d'aller plus loin, l'une des choses que M. Sweigart mentionne dès le début de l'article, c'est qu'il existe une manière de faire avorter le programme juste au cas où quelque chose se passe mal. Il dit « PyAutoGUI a aussi une fonctionnalité de sauvetage en cas de défaut. Le déplacement du curseur de la souris dans le coin en haut à gauche entraînera le déclenchement de l'exception pyautogui.FailSafeException. » C'est une excellente chose à savoir. Non seulement l'exception est activée quand le curseur est manuellement déplacé dans le coin en haut à gauche, mais la même chose arrive dans n'importe quel angle, et aussi par une demande du programme. Aussi, quand nous créerons notre première démonstration, nous devrons la prendre en considération. Nous commencerons en utilisant la méthode « moveTo() » de la bibliothèque. Pour cela, nous avons besoin de fournir les coordonnées x et y d'où nous voulons que le curseur de la souris aille se placerainsi que la durée. Je vais partir du principe que vous savez déjà que le coin en haut à gauche de votre écran est 0,0 et que le coin en bas à droite est width, height (ou dans mon cas, 1920, 1080). M Sweigart suggère une durée de 0,25 secondes, mais je voudrais voir l'action se dérouler un peu plus lentement ; aussi, j'utiliserai une durée de 0,75 secondes.
  
 **pyautogui.moveTo(15, 15, duration = 0.75) **pyautogui.moveTo(15, 15, duration = 0.75)
Ligne 135: Ligne 135:
 si vous me suivez dans le shell Python, vous verrez que votre curseur de souris décolle tout seul et file directement vers le coin en haut à gauche, s'arrêtant juste aux limites physiques. si vous me suivez dans le shell Python, vous verrez que votre curseur de souris décolle tout seul et file directement vers le coin en haut à gauche, s'arrêtant juste aux limites physiques.
  
-Maintenant, déplaçons le curseur de la souris vers chacun des autres angles de l'écran, puis vers le centre. Souvenez-vous que les valeurs que j'utilise sont pour mon écran. Vous devrez les modifier pour les adapter au votre. Souvenez-vous aussi de retrancher quelques pixels dans chaque coin pour éviter de déclencher la procédure de sauvegarde.+Maintenant, déplaçons le curseur de la souris vers chacun des autres angles de l'écran, puis vers le centre. Souvenez-vous que les valeurs que j'utilise sont pour mon écran. Vous devrez les modifier pour les adapter au vôtre. Souvenez-vous aussi de retrancher quelques pixels dans chaque coin pour éviter de déclencher la procédure de sauvegarde.
  
 >>> pyautogui.moveTo(1905, 15, duration = 0.75) >>> pyautogui.moveTo(1905, 15, duration = 0.75)
Ligne 145: Ligne 145:
 >>> pyautogui.moveTo(swidth/2, sheight/2, duration=0.75) >>> pyautogui.moveTo(swidth/2, sheight/2, duration=0.75)
  
-Du bon boulot. Continuons pour voir ce que nous pouvons faire d'autre.+Assez épatant. Continuons pour voir ce que nous pouvons faire d'autre.
  
 **Beyond simple mouse movement **Beyond simple mouse movement
Ligne 155: Ligne 155:
 Au-delà d'un simple mouvement de souris Au-delà d'un simple mouvement de souris
  
-Maintenant, faisons quelque chose d'encore plus amusant. J'ai un dossier sur mon Bureau qui s'appelle Clenup (Ménage). Plus souvent que je ne veux l'admettre, je sauvegarde des choses sur mon bureau pour m'en souvenir. L'idée est que je dispose d'un rappel constant alors que je travaille sur une chose ou que je m'occupe à quelque chose. Un jour ou l'autre, je veux l'enlever du bureau et le placer ailleurs pour un usage ultérieur. Je néglige souvent de le déplacer et, dans un effort pour que ce soit plus propre et plus logique, j'ai créé le dossier « cleanup ».+Maintenant, faisons quelque chose d'encore plus amusant. J'ai un dossier sur mon Bureau qui s'appelle Cleanup (Ménage). Plus souvent que je ne veux l'admettre, je sauvegarde des choses sur mon bureau pour m'en souvenir. L'idée est que je dispose d'un rappel constant alors que je travaille sur une chose ou que je m'occupe de quelque chose. Un jour ou l'autre, je veux l'enlever du bureau et le placer ailleurs pour un usage ultérieur. Je néglige souvent de le déplacer et, dans un effort pour que ce soit plus propre et plus logique, j'ai créé le dossier « cleanup ».
  
-Une des merveilleuses choses que fait PyAutoGUI, c'est qu'il vous autorise à envoyer des clics et des doubles-clics (ainsi que d'autres évènements de la souris) vers une position x,y de l'écran. Mais comment dites-vous à PyAutoGUI où se trouve un élément particulier, si vous ne connaissez pas les coordonnées x,y ? Un des outils qu'on trouve dans PyAutoGUI donne la possibilité de lui fournir une image de quelque chose qui devrait être sur l'écran, pour qu'il trouve sa position.+Une des merveilleuses choses que fait PyAutoGUI, c'est qu'il vous autorise à envoyer des clics et des doubles-clics (ainsi que d'autres évènements de la souris) vers une position x,y de l'écran. Mais comment dites-vous à PyAutoGUI où se trouve un élément précis, si vous ne connaissez pas les coordonnées x,y ? L'un des outils qu'on trouve dans PyAutoGUI donne la possibilité de lui fournir une image de quelque chose qui devrait être sur l'écran, pour qu'il trouve sa position.
  
 **I used Shutter, a screen capture program for Linux, to grab a section of my desktop and save it as a .png file. In this case, it was the icon of the cleanup folder... **I used Shutter, a screen capture program for Linux, to grab a section of my desktop and save it as a .png file. In this case, it was the icon of the cleanup folder...
Ligne 173: Ligne 173:
 [83, 456, 69, 72]** [83, 456, 69, 72]**
  
-J'ai utilisé Shutter, un programme de capture d'écran pour Linux, pour récupérer un secteur de mon bureau et le sauver dans un fichier .png. Dans ce cas-ci, c'était l'cône du dossier cleanup...+J'ai utilisé Shutter, un programme de capture d'écran pour Linux, pour récupérer un secteur de mon bureau et le sauver dans un fichier .png. Dans ce cas-, c'était l'icône du dossier cleanup...
  
 Puis, j'ai utilisé la méthode locateOnScreen pour me renvoyer la position x/y de l'icône du dossier sur l'écran. Puis, j'ai utilisé la méthode locateOnScreen pour me renvoyer la position x/y de l'icône du dossier sur l'écran.
Ligne 198: Ligne 198:
 Next, I used Shutter again to grab a section of the folder window that would be fairly unique to it. I determined that I would need to use a portion of the title bar. I had to make sure that the folder window was not highlighted, since I couldn’t be sure the folder would be highlighted when I asked PyAutoGUI to find it.** Next, I used Shutter again to grab a section of the folder window that would be fairly unique to it. I determined that I would need to use a portion of the title bar. I had to make sure that the folder window was not highlighted, since I couldn’t be sure the folder would be highlighted when I asked PyAutoGUI to find it.**
  
-Ainsi, je sais que la position de l'icône du dossier commence à 83456 et a un largeur de 69 et une hauteur de 72 pixels, qui est aussi la taille de l'image que j'ai utilisé.+Ainsi, je sais que la position de l'icône du dossier commence à 83.456 et a un largeur de 69 et une hauteur de 72 pixels, ce qui est aussi la taille de l'image que j'ai utilisé.
  
 Enfin, je dit à PyAutoGUI d'envoyer un double-clic à un emplacement à l'intérieur de la boîte englobante. Enfin, je dit à PyAutoGUI d'envoyer un double-clic à un emplacement à l'intérieur de la boîte englobante.
Ligne 204: Ligne 204:
 pyautogui.doubleClick(105,480) pyautogui.doubleClick(105,480)
  
-Et le dossier s'ouvre exactement comme si j'avais déplacé manuellement la souris vers l'icône, puis double_cliqué dessus.+Et le dossier s'ouvre exactement comme si j'avais déplacé manuellement la souris vers l'icône, puis double-cliqué dessus.
  
-Ensuite, j'ai utilisé Shutter pour récupérer un secteur de la fenêtre du dossier qui lui était plutôt propre. J'ai déterminé que je devrais utiliser une morceau de la barre de titre. Je devais m'assurer que la fenêtre du dossier n'était pas au premier-plan, car je n'aurais pas pu être sûr que le dossier avait été mis en avant quand j'aurai demandé à PyAutoGUI de le trouver.+Ensuite, j'ai utilisé Shutter pour récupérer un secteur de la fenêtre du dossier qui lui était plutôt propre. J'ai constaté que je devrais utiliser une partie de la barre de titre. Je devais m'assurer que la fenêtre du dossier n'était pas surlignée, car je n'aurais pas pu être sûr que le dossier avait été mis en avant quand j'aurai demandé à PyAutoGUI de le trouver.
  
 **Next, I use locateOnScreen again with the new image. **Next, I use locateOnScreen again with the new image.
Ligne 230: Ligne 230:
 Box(left=908, top=89, width=86, height=46) Box(left=908, top=89, width=86, height=46)
  
-Maintenant que je savais où se situe la barre de titre, je voulais essayer de déplacer un peu la fenêtre en utilisant la méthode .drag. Bien sûr, j'avais besoin déplacer le curseur de la souris un peu vers le bas, car, comme vous pouvez le voir dans l'image ci-dessus, j'ai capturé un peu de l'arrière-plan du bureau quand j'ai réalisé ma capture d'image.+Maintenant que je savais où se situe la barre de titre de la fenêtre, je voulais essayer de déplacer un peu la fenêtre en utilisant la méthode .drag. Bien sûr, j'avais besoin de déplacer le curseur de la souris un peu vers le bas, car, comme vous pouvez le voir dans l'image ci-dessus, j'ai capturé un peu de l'arrière-plan du bureau quand j'ai réalisé ma capture d'image.
  
 >>> pyautogui.moveTo(908,100, duration=0.75); pyautogui.drag(50,0,0.75,button="left") >>> pyautogui.moveTo(908,100, duration=0.75); pyautogui.drag(50,0,0.75,button="left")
Ligne 244: Ligne 244:
 Until next time, keep coding!** Until next time, keep coding!**
  
-Et bien sûr, la fenêtre s'est déplacé lentement vers la droite. Pour faciliter à coup sûr un ensemble d'actions ininterrompu, j'ai utilisé un point-virgule pour séparer les deux déclarations puisque j'étais dans le shell interactif. Si (et seulement si) j'avais créé ceci dans un IDE, je me serai assuré que les deux déclarations étaient sur des lignes distinctes.+Et bien sûr, la fenêtre s'est déplacé lentement vers la droite. Pour faciliter à coup sûr un ensemble d'actions ininterrompu, j'ai utilisé un point-virgule pour séparer les deux déclarations puisque j'étais dans le shell interactif. Si (et seulement si) j'avais créé ceci dans un IDE, je me serais assuré que les deux déclarations étaient sur des lignes distinctes.
  
-Ainsi, j'ai été capable d'apprendre rapidement (et de vous l'apprendre) les bases de PyAutoGUI et de commencer à formuler les débuts de mon programme de tests automatiques. Je serai capable de créer un script, dans un script Python, qui pourra créer un GUI Page, redimmensionner et déplacer la partie principale, ajouter des gadgets, paramétrer des attributs et plus encore.+Ainsi, j'ai été capable d'apprendre rapidement (et de vous les enseigner) les bases de PyAutoGUI et de commencer à formuler les débuts de mon programme de tests automatiques. Je pourrai créer un script, dans un script Python, qui pourra créer un GUI Page vide, redimmensionner et déplacer la partie principale, ajouter des gadgets, paramétrer des attributs et plus encore.
  
 Cet article avait pour objectif d'aiguiser votre appétit sur les possibilités que peut vous fournir PyAutoGUI. Il y a BEAUCOUP, BEAUCOUP d'autres choses faisables, beaucoup trop pour même les effleurer ici. Vous pouvez trouver la documentation complète de PyAutoGui sur https://pyautogui.readthedocs.io/en/latest/index.html Cet article avait pour objectif d'aiguiser votre appétit sur les possibilités que peut vous fournir PyAutoGUI. Il y a BEAUCOUP, BEAUCOUP d'autres choses faisables, beaucoup trop pour même les effleurer ici. Vous pouvez trouver la documentation complète de PyAutoGui sur https://pyautogui.readthedocs.io/en/latest/index.html
issue151/python.txt · Dernière modification: 2019/12/07 16:05 de andre_domenech