Comment contrôler le curseur de la souris en Python, c'est-à-dire le déplacer vers une certaine position et cliquer, sous Windows?
Comment contrôler le curseur de la souris en Python, c'est-à-dire le déplacer vers une certaine position et cliquer, sous Windows?
Réponses:
Testé sur WinXP, Python 2.6 (3.x également testé) après l'installation de pywin32 (pywin32-214.win32-py2.6.exe dans mon cas):
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)
win32api.SetCursorPos((x,y))
est préférable d'être remplacé par win32api.mouse_event(win32con.MOUSEEVENTF_MOVE | win32con.MOUSEEVENTF_ABSOLUTE, int(x/SCREEN_WIDTH*65535.0), int(y/SCREEN_HEIGHT*65535.0))
mon expérience pour une meilleure intégration avec d'autres applications telles que les jeux.
python3.x
travaux aussi, n'hésitez pas à modifier la réponse
Essayez avec le module PyAutoGUI . C'est multiplateforme.
pip install pyautogui
Et donc:
import pyautogui
pyautogui.click(100, 100)
Il possède également d'autres fonctionnalités:
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
C'est beaucoup plus facile que de passer par tous les trucs win32con.
Vous pouvez utiliser win32api
ou ctypes
module pour utiliser des API win32 pour contrôler la souris ou n'importe quel GUI
Voici un exemple amusant pour contrôler la souris en utilisant 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 à l'aide de 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
SetCursorPos
?
Une autre option consiste à utiliser le package AutoPy multiplateforme . Ce package a deux options différentes pour déplacer la souris:
Cet extrait de code déplace instantanément le curseur sur la position (200 200):
import autopy
autopy.mouse.move(200,200)
Si vous souhaitez plutôt que le curseur se déplace visiblement à travers l'écran vers un emplacement donné, vous pouvez utiliser la commande smooth_move:
import autopy
autopy.mouse.smooth_move(200,200)
Découvrez la plateforme croisée PyMouse: https://github.com/pepijndevos/PyMouse/
tap space
et tap screen shot key
en utilisant PyUswerInput?
PyUserInput
est cassé. Je ne peux pas dire si cela fonctionne bien ou non car je n'arrive même pas à l'installer en raison de dépendances cassées.
from Xlib import X, display
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(300,300)
d.sync()
Source: déplacement de la souris Python en 5 lignes de code (Linux uniquement) .
Xlib.ext.xtest.fake_input(d, X.ButtonPress, 1); d.sync(); time.sleep(0.001); Xlib.ext.xtest.fake_input(d, X.ButtonRelease, 1); d.sync();
l'appel sleep () entre la presse et le relâchement peut être requis ou non en fonction de l'application cible.
Pynput est la meilleure solution que j'ai trouvée, à la fois pour Windows et pour Mac. Super facile à programmer et fonctionne très bien.
Par exemple,
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)
Fonction rapide et sale qui fera un clic gauche n'importe où clicks
sur Windows 7 en utilisant la ctypes
bibliothèque. Aucun téléchargement requis.
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.
À partir de 2020 , vous pouvez utiliser la souris :
import mouse
mouse.move("500", "500")
mouse.left_click()
Caractéristiques
Si vous souhaitez déplacer la souris, utilisez ceci:
import pyautogui
pyautogui.moveTo(x,y)
Si vous voulez cliquer, utilisez ceci:
import pyautogui
pyautogui.click(x,y)
Si vous ne l'avez pas pyautogui
installé, vous devez avoir python attaché à CMD. Allez dans CMD et écrivez:pip install pyautogui
Cela sera installé pyautogui
pour Python 2.x.
Pour Python 3.x, vous devrez probablement utiliser pip3 install pyautogui
ou python3 -m pip install pyautogui
.
pyautogui.moveTo(x, y)
car move()
déplace le curseur par rapport à sa position actuelle.
moveTo()
se déplace vers un emplacement absolu, tandis que move()
se déplace par rapport à l'emplacement actuel du curseur.
Une autre alternative serait la bibliothèque de souris , je l'utilise personnellement car elle est relativement simple et multiplateforme.
Voici comment vous pouvez l'utiliser:
import mouse
# move 100 right and 100 down with a duration of 0.5 seconds
mouse.move(100, 100, absolute=False, duration=0.5)
# left click
mouse.click('left')
# right click
mouse.click('right')
Voici la source: Comment contrôler votre souris en Python
La réponse acceptée a fonctionné pour moi, mais elle était instable (parfois, les clics ne s'inscrivaient pas), j'ai donc ajouté un MOUSEEVENTF_LEFTUP supplémentaire . Ensuite, cela fonctionnait de manière fiable
import win32api, win32con
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
click(10,10)
très facile 1- installer le paquet:
pip install mouse
2- ajouter une bibliothèque au projet:
import mouse
3- utilisez-le par exemple:
mouse.right_click()
dans cette URL décrivez toutes les fonctions que vous pouvez utiliser: