40 votes

Comment contrôler la souris sur Mac à l'aide de Python ?

Quel serait le moyen le plus simple de déplacer la souris (et éventuellement de cliquer) en utilisant Python sous OS X ?

Il s'agit d'un prototype rapide, qui n'a pas besoin d'être élégant.

8voto

Jeremy Banks Points 32470

Lorsque j'ai voulu le faire, j'ai installé Jython et a utilisé le java.awt.Robot classe. Si vous avez besoin de faire un script CPython, ce n'est évidemment pas adapté, mais si vous avez la possibilité de choisir n'importe quoi, c'est une bonne solution multiplateforme.

import java.awt

robot = java.awt.Robot()

robot.mouseMove(x, y)
robot.mousePress(java.awt.event.InputEvent.BUTTON1_MASK)
robot.mouseRelease(java.awt.event.InputEvent.BUTTON1_MASK)

2voto

Gwenn Points 186

Le mieux est d'utiliser la fonction Paquet AutoPy . Il est extrêmement simple à utiliser, et multiplateforme de surcroît.

Pour déplacer le curseur à la position (200,200) :

import autopy
autopy.mouse.move(200,200)

1voto

dfred Points 173

Le script python script de geekorgy.com est très bien, mais j'ai rencontré quelques problèmes depuis que j'ai installé une version plus récente de Python. Voici donc quelques conseils pour ceux qui cherchent une solution.

Si vous avez installé Python 2.7 sur votre Mac OS 10.6, vous avez quelques options pour que python importe de Quartz.CoreGraphics :

A) Dans le terminal, type python2.6 au lieu de python avant le chemin d'accès au script.

B) Vous pouvez installer PyObjC en procédant comme suit :

  1. Installer easy_install à partir de http://pypi.python.org/pypi/setuptools

  2. Dans le terminal, tapez which python et copier le chemin jusqu'à 2.7

  3. Tapez ensuite easy_install –-prefix /Path/To/Python/Version pyobjc==2.3

    **ie. easy_install –-prefix /Library/Frameworks/Python.framework/Versions/2.7 pyobjc==2.3

  4. A l'intérieur du type script, on trouve import objc au sommet

  5. Si easy_install ne fonctionne pas la première fois, il se peut que vous deviez d'abord installer le noyau :

    **ie. easy_install --prefix /Library/Frameworks/Python.framework/Versions/2.7 pyobjc-core==2.3

C) Vous pouvez réinitialiser le chemin d'accès à python à la version originale de Mac OS python :

  • Dans le terminal, tapez : defaults write com.apple.versioner.python Version 2.6

***Aussi, un moyen rapide de trouver les coordonnées (x,y) sur l'écran :

  1. Presse Command+Shift+4 (sélection de capture d'écran)
  2. Le curseur affiche alors les coordonnées
  3. Appuyez ensuite sur Echap pour en sortir.

0voto

Rizwan Kassim Points 2467

Le moyen le plus simple ? Compiler este Cocoa et lui transmettre les mouvements de votre souris.

Voici le code :

// File:
// click.m
//
// Compile with:
// gcc -o click click.m -framework ApplicationServices -framework Foundation
//
// Usage:
// ./click -x pixels -y pixels
// At the given coordinates it will click and release.

#import <Foundation/Foundation.h>
#import <ApplicationServices/ApplicationServices.h>

int main(int argc, char **argv) {
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  NSUserDefaults *args = [NSUserDefaults standardUserDefaults];

  // grabs command line arguments -x and -y
  //
  int x = [args integerForKey:@"x"];
  int y = [args integerForKey:@"y"];

  // The data structure CGPoint represents a point in a two-dimensional
  // coordinate system.  Here, X and Y distance from upper left, in pixels.
  //
  CGPoint pt;
  pt.x = x;
  pt.y = y;

  // https://stackoverflow.com/questions/1483567/cgpostmouseevent-replacement-on-snow-leopard
  CGEventRef theEvent = CGEventCreateMouseEvent(NULL, kCGEventLeftMouseDown, pt, kCGMouseButtonLeft);
  CGEventSetType(theEvent, kCGEventLeftMouseDown);
  CGEventPost(kCGHIDEventTap, theEvent);
  CFRelease(theEvent);

  [pool release];
  return 0;
}

App appelée click qui invoque CGPostMouseEvent à partir du fichier d'en-tête CGRemoteOperation.h. Elle prend des coordonnées comme arguments de ligne de commande, déplace la souris à cette position, puis clique et relâche le bouton de la souris.

Sauvegardez le code ci-dessus sous le nom de click.m, ouvrez Terminal et allez dans le dossier où vous avez sauvegardé le code source. Compilez ensuite le programme en tapant gcc -o click click.m -framework ApplicationServices -framework Foundation . Ne vous laissez pas intimider par la nécessité de compiler ce programme, car il y a plus de commentaires que de code. Il s'agit d'un programme très court qui effectue une tâche simple.


Un autre moyen ? Importation pyobjc pour accéder à une partie de la structure OSX et accéder à la souris de cette manière. (voir le code du premier exemple pour des idées).

0voto

kenorb Points 2464

Utilice CoreGraphics de la bibliothèque Quartz, par exemple :

from Quartz.CoreGraphics import CGEventCreate
from Quartz.CoreGraphics import CGEventGetLocation
ourEvent = CGEventCreate(None);
currentpos = CGEventGetLocation(ourEvent);
mousemove(currentpos.x,currentpos.y)

Source : Tony commente la page Geekorgy .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X