2009-12-27 7 views
5

Sono molto nuovo in Python. Sto cercando di scrivere un programma che farà clic con il mouse su (x, y), spostarlo su (a, b), quindi attendere fino a quando il colore sotto il mouse non sarà di un certo colore, diciamo #fff. Quando è quel colore, fa nuovamente clic e quindi si ripete.Simula il clic del mouse/Rileva il colore sotto il cursore in Python

Non riesco a trovare una buona API per roba relativa al mouse per python.

+1

Puoi trovare alcune informazioni cliccando qui: http://stackoverflow.com/questions/1181464/controlling-mouse-with-python – snw

risposta

6

L'API per la simulazione degli eventi del mouse dipende dalla piattaforma. Non conosco nessuna soluzione multipiattaforma.

Su Windows, è possibile accedere all'API Win32 grazie ai ctypes. vedi mouse_event on MSDN. Potresti anche essere interessato a pywinauto

Per ottenere il colore sotto il mouse, hai bisogno della posizione del mouse. Vedi GetCursorPos on MSDN. Quindi se la tua app ha un'API per ottenere il colore in questa posizione, puoi usarla. In caso contrario, puoi provare ad afferrare una piccola porzione dello schermo attorno al cursore e usare PIL per ottenere i colori di ogni pixel in quest'area. Penso che l'acquisizione dello schermo PIL funzioni solo su Windows Paltform, ma non ne sono sicuro.

Sto usando la seguente funzione per una simile esigenza:

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

se siete su Windows, quindi, per questo genere di cose, si vuole veramente provare autohotkey. Non è python, ma è estremamente potente per fare questo genere di cose su una macchina Windows. Anche la comunità degli utenti è estremamente utile. Dai un'occhiata al forum "chiedi aiuto".