用Python控制鼠标

278 投票
19 回答
655672 浏览
提问于 2025-04-15 13:09

在Python中,怎么控制鼠标光标呢?也就是说,如何把鼠标移动到某个位置并点击,特别是在Windows系统下?

19 个回答

91

你可以使用 win32apictypes 模块来调用 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)

撰写回答