control and python mouse

python - and - pyautogui



Controlando el mouse con Python (8)

Linux

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

Fuente: ratón de Python se mueve en 5 líneas de código (solo Linux) .

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



Función rápida y sucia que hará clic en el botón izquierdo cada vez que haga clicks en Windows 7 con 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.


Otra opción es utilizar 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, por el contrario, desea que el cursor se mueva visiblemente por la pantalla hacia una ubicación determinada, puede usar el comando smooth_move:

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


Probado en WinXP, Python 2.6 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)


Pruebe 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 win32con.


Puede usar el módulo win32api o ctypes para usar aplicaciones win32 para controlar el mouse o cualquier interfaz win32api ctypes

Aquí hay un ejemplo divertido para controlar el mouse con 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 clic usando 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


Pynput es la mejor solución que he encontrado, tanto para Windows como para Mac. Súper fácil de programar, 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)