如何在Python中控制鼠标光标,即移动到特定位置并单击,在Windows下?
当前回答
从2022年开始,你可以使用鼠标:
import mouse
mouse.move("500", "500")
mouse.click() # default to left click
# mouse.right_click()
# mouse.double_click(button='left')
# mouse.double_click(button='right')
# mouse.press(button='left')
# mouse.release(button='left')
完整的Api文档
特性
所有鼠标设备上的全局事件钩子(捕获事件而不管 聚焦)。 监听并发送鼠标事件。 适用于Windows和Linux(需要sudo)。 纯Python,不需要编译C模块。 零依赖关系。简单的安装和部署,只需复制 文件。 Python 2 / 3 包括高级API(例如记录和播放)。 事件自动捕获在单独的线程,不阻塞主 程序。 测试并记录。
安装
Windows: pip安装鼠标 Linux: sudo pip install mouse
其他回答
测试在WinXP, Python 2.6(3。在安装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)
接受的答案为我工作,但它是不稳定的(有时点击不会注册),所以我添加了一个额外的MOUSEEVENTF_LEFTUP。然后它就可靠地工作了
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)
查看跨平台PyMouse: https://github.com/pepijndevos/PyMouse/
快速和肮脏的函数,在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.
在屏幕上随机移动鼠标
它会根据你的屏幕分辨率在屏幕上随机移动鼠标。 检查下面的代码。
使用此命令安装pip Install pyautogui。
import pyautogui
import time
import random as rnd
#calculate height and width of screen
w, h = list(pyautogui.size())[0], list(pyautogui.size())[1]
while True:
time.sleep(1)
#move mouse at random location in screen, change it to your preference
pyautogui.moveTo(rnd.randrange(0, w),
rnd.randrange(0, h))#, duration = 0.1)
推荐文章
- 在Python格式字符串中%s是什么意思?
- 如何循环通过所有但最后一项的列表?
- python用什么方法避免默认参数为空列表?
- ValueError: numpy。Ndarray大小改变,可能表示二进制不兼容。期望从C头得到88,从PyObject得到80
- Anaconda /conda -安装特定的软件包版本
- 我在哪里调用Keras的BatchNormalization函数?
- 打印测试执行时间并使用py.test锁定缓慢的测试
- 插入一行到熊猫数据框架
- 要列出Pandas DataFrame列
- 在Django模型中存储电话号码的最佳方法是什么?
- 从导入的模块中模拟函数
- 滚动或滑动窗口迭代器?
- python的方法找到最大值和它的索引在一个列表?
- 如何读取文件的前N行?
- 如何删除matplotlib中的顶部和右侧轴?