2009-12-27 7 views
5

Je suis très nouveau sur python. J'essaie d'écrire un programme qui va cliquer sur la souris à (x, y), le déplacer vers (a, b), puis attendre que la couleur sous la souris soit d'une certaine couleur, disons #fff. Quand c'est cette couleur, il clique à nouveau puis répète.Simuler le clic de souris/Détecter la couleur sous le curseur en Python

Je ne trouve pas une bonne API pour les choses liées à la souris pour python.

+1

Vous pouvez trouver quelques informations en cliquant ici: http://stackoverflow.com/questions/1181464/controlling-mouse-with-python – snw

Répondre

6

L'API de simulation des événements de souris dépend de votre plate-forme. Je ne connais aucune solution multi-plateforme.

Sous Windows, vous pouvez accéder à l'API Win32 à l'aide de ctypes. voir mouse_event on MSDN. Vous pouvez également être intéressé par pywinauto

Pour obtenir la couleur sous la souris, vous avez besoin de la position de la souris. Voir GetCursorPos on MSDN. Ensuite, si votre application dispose d'une API pour obtenir la couleur à cette position, vous pouvez l'utiliser. Sinon, vous pouvez essayer d'attraper une petite partie de l'écran autour du curseur et d'utiliser PIL pour obtenir les couleurs de chaque pixel dans cette zone. Je pense que la capture d'écran PIL ne fonctionne que sur Windows paltform mais je ne suis pas sûr.

J'utilise la fonction suivante pour un même besoin:

def grab_main_color(self, rect, max_colors=256): 
    """returns a tuple with the RGB value of the most present color in the given rect""" 
    img=ImageGrab.grab(rect) 
    colors = img.getcolors(max_colors) 
    max_occurence, most_present = 0, 0 
    try: 
     for c in colors: 
      if c[0] > max_occurence: 
       (max_occurence, most_present) = c 
     return most_present 
    except TypeError: 
     raise Exception("Too many colors in the given rect") 
-1

si vous êtes sous Windows, puis, pour ce genre de chose, vous voulez vraiment essayer autohotkey. Ce n'est pas python, mais extrêmement puissant pour faire ce genre de chose sur une machine Windows. La communauté des utilisateurs est extrêmement utile, aussi. Découvrez leur forum "demander de l'aide".