Controlando el mouse con Python

¿Cómo se controla el cursor del mouse en Python, es decir, moverlo a cierta posición y hacer clic en Windows?

Probado en WinXP, Python 2.6 (3.x también probado) después de instalar pywin32 (pywin32-214.win32-py2.6.exe en mi caso):

import win32api, win32con def click(x,y): win32api.SetCursorPos((x,y)) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0) click(10,10) 

Prueba con el módulo PyAutoGUI . Es multiplataforma.

 pip install pyautogui 

Y entonces:

 import pyautogui pyautogui.click(100, 100) 

También tiene otras características:

 import pyautogui pyautogui.moveTo(100, 150) pyautogui.moveRel(0, 10) # move mouse 10 pixels down pyautogui.dragTo(100, 150) pyautogui.dragRel(0, 10) # drag mouse 10 pixels down 

Esto es mucho más fácil que pasar por todas las cosas de win32con.

Puedes usar win32api o ctypes para usar win32 apis para controlar el mouse o cualquier gui

Aquí hay un ejemplo divertido para controlar el mouse usando win32api:

 import win32api import time import math for i in range(500): x = int(500+math.sin(math.pi*i/100)*500) y = int(500+math.cos(i)*100) win32api.SetCursorPos((x,y)) time.sleep(.01) 

Un click utilizando ctypes:

 import ctypes # see http://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx for details ctypes.windll.user32.SetCursorPos(100, 20) ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) # left down ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) # left up 

Echa un vistazo a la plataforma multiplataforma PyMouse: https://github.com/pepijndevos/PyMouse/

Otra opción es usar el paquete AutoPy multiplataforma. Este paquete tiene dos opciones diferentes para mover el mouse:

Este fragmento de código moverá instantáneamente el cursor a la posición (200,200):

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

Si, en cambio, desea que el cursor se mueva visiblemente a través de la pantalla a una ubicación determinada, puede usar el comando smooth_move:

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

Linux

 from Xlib import X, display d = display.Display() s = d.screen() root = s.root root.warp_pointer(300,300) d.sync() 

Fuente: movimiento del mouse de Python en 5 líneas de código (solo Linux) .

Función rápida y sucia que hará clic izquierdo en cualquier momento en que haga clicks en Windows 7 utilizando la biblioteca ctypes . No se requieren descargas.

 import ctypes SetCursorPos = ctypes.windll.user32.SetCursorPos mouse_event = ctypes.windll.user32.mouse_event def left_click(x, y, clicks=1): SetCursorPos(x, y) for i in xrange(clicks): mouse_event(2, 0, 0, 0, 0) mouse_event(4, 0, 0, 0, 0) left_click(200, 200) #left clicks at 200, 200 on your screen. Was able to send 10k clicks instantly. 

Pynput es la mejor solución que he encontrado, tanto para Windows como para Mac. Súper fácil de progtwigr, y funciona muy bien.

Por ejemplo,

 from pynput.mouse import Button, Controller mouse = Controller() # Read pointer position print('The current pointer position is {0}'.format( mouse.position)) # Set pointer position mouse.position = (10, 20) print('Now we have moved it to {0}'.format( mouse.position)) # Move pointer relative to current position mouse.move(5, -5) # Press and release mouse.press(Button.left) mouse.release(Button.left) # Double click; this is different from pressing and releasing # twice on Mac OSX mouse.click(Button.left, 2) # Scroll two steps down mouse.scroll(0, 2)