用Python控制鼠标
在Python中,怎么控制鼠标光标呢?也就是说,如何把鼠标移动到某个位置并点击,特别是在Windows系统下?
19 个回答
91
你可以使用 win32api
或 ctypes
模块来调用 Windows 的一些功能,这样就可以控制鼠标或者任何图形界面了。
下面是一个有趣的例子,教你如何用 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
226
可以试试这个叫 PyAutoGUI 的模块。它可以在多个平台上使用。
pip install pyautogui
接下来:
import pyautogui
pyautogui.click(100, 100)
它还有其他一些功能:
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 相关内容简单多了。
378
在Windows XP上测试,使用的是Python 2.6(我也测试了3.x版本),在安装了pywin32之后(在我的情况下是pywin32-214.win32-py2.6.exe):
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)