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?
Consulte la plataforma cruzada PyMouse: https://github.com/pepijndevos/PyMouse/
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)