用Python控制鼠标

在Python中如何控制鼠标光标,即将其移动到某个位置并在Windows下单击?

在安装pywin32 (python32-214.win32-py2.6.exe)后,在WinXP,Python 2.6上进行testing:

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) 

您可以使用win32apictypes模块来使用win32 apis来控制鼠标或任何gui

这里有一个有趣的例子来控制使用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) 

点击使用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 

尝试使用PyAutoGUI模块。 这是多平台。

 pip install pyautogui 

所以:

 import pyautogui pyautogui.click(100, 100) 

它还具有其他function:

 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 

这比通过所有的win32con的东西要容易得多。

看看跨平台PyMouse: https : //github.com/pepijndevos/PyMouse/

另一个select是使用跨平台的AutoPy包 。 这个软件包有两个不同的移动鼠标的选项:

这段代码会立即将光标移动到位置(200,200):

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

如果您希望光标在屏幕上可见地移动到指定位置,则可以使用smooth_move命令:

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

http://danielbaggio.blogspot.com/2009/03/python-mouse-move-in-5-lines-of-code.html

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

快速和肮脏的function,将点击左键clicks时间在Windows 7使用ctypes库左键单击。 无需下载。

 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.