Controlling mouse with Python

匿名 (未验证) 提交于 2019-12-03 02:16:02

问题:

How does one control the mouse cursor in Python, i.e. move it to certain position and click, under Windows?

回答1:

Tested on WinXP, Python 2.6 after installing pywin32 (pywin32-214.win32-py2.6.exe in my case):

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)


回答2:

Try with the PyAutoGUI module. It's multiplatform.

pip install pyautogui

And so:

import pyautogui pyautogui.click(100, 100)

It also has other features:

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

This is much easier than going through all the win32con stuff.



回答3:

You can use win32api or ctypes module to use win32 apis for controlling mouse or any gui

Here is a fun example to control mouse using 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)

A click using 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


回答4:

Check out the cross platform PyMouse: https://github.com/pepijndevos/PyMouse/



回答5:

Another option is to use the cross-platform AutoPy package. This package has two different options for moving the mouse:

This code snippet will instantly move the cursor to position (200,200):

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

If you instead want the cursor to visibly move across the screen to a given location, you can use the smooth_move command:

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


回答6:

Linux

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

Source: Python mouse move in 5 lines of code (Linux only).



回答7:

Quick and dirty function that'll left click wherever clicks times on Windows 7 using the ctypes library. No downloads required.

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.


回答8:

Pynput is the best solution I have found, both for Windows and for Mac. Super easy to program, and works very well.

For example,

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)


转载请标明出处:Controlling mouse with Python
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!