python控制键盘和鼠标

安装PyAutoGui模块

命令行安装:

pip install pyautogui

pycharm搜索第三方包安装
在这里插入图片描述

暂停和防止故障设置

当我们在执行脚本的时候,如果脚本执行错误操作,我们需要手动控制鼠标和键盘来操作时,我们需要设定一下故障设置操作的等待时间。
我们可以设置pyautogui.PAUSE = 1,这个值设定的是指每个pyautogui函数运行完成之后暂停1s。
我们可以设置pyautogui.FAILSAFE = True,当pyautogui函数运行过程中出现异常时,会自动启动防止故障功能,鼠标会移动到屏幕左上角,我们设置成True则可以禁止启动这项功能。

控制鼠标

获取当前执行机的分辨率

我们可以通过pyautogui.size()来获取当前执行机的分辨率。该方法返回的是一个分辨率的元祖。

import pyautogui
print(pyautogui.size())

执行结果:

Size(width=1920, height=1080)

可以将来自 pyautogui.size() 的宽和高,存在变量中,如 width 和 height,让程序的可读性更好。

移动鼠标

我们执行机的坐标位置是左上角为(0, 0),右下角为分辨率的宽和高pyautogui.size() 。
我们可以通过pyautogui.moveTo(x, y,duration=0.25)来移动鼠标,需要给定坐标参数和鼠标移动的秒数。假设我们自动移动鼠标到屏幕正中央。

import pyautogui

width, height = pyautogui.size()
x, y = (int(width / 2), int(height / 2))

pyautogui.moveTo(x, y, duration=1)

上述代码则会将鼠标缓缓移动到屏幕正中央。
我们也可以通pyautogui.moveRel(x, y,duration=0.25)来移动鼠标,此时移动鼠标是根据当前位置来移动横纵距离。

import pyautogui

for i in range(10):
	#水平向左移动100
    pyautogui.moveRel(100, 0, duration=1)   
    #竖直向下移动100
    pyautogui.moveRel(0, 100, duration=1)
    #水平向右移动100
    pyautogui.moveRel(-100, 0, duration=1)
    #竖直向上移动100
    pyautogui.moveRel(0, -100, duration=1)

上述代码会在鼠标放置的位置以正方形轨迹模式移动。

获取鼠标位置

通过pyautogui.position()方法 ,可以确定鼠标当前的位置。它将返回函数
调用时,鼠标 x、y 坐标的元组。

import pyautogui

print(pyautogui.position())

执行结果:

Point(x=642, y=578)

点击鼠标操作

通过pyautogui.click(x, y, button=“left/ right/ middle”) 方法发送鼠标点击操作指令。
例如,pyautogui.click(100,150,button=‘left’)将在坐标(100,150)
处点击鼠标左键。而 pyautogui.click(200,250,button=‘right’)将在坐标(200,250)
处点击右键。(注意:click指的是鼠标按键按下一次,再松开)
实现点击也可以调用 pyautogui.mouseDown(),这只是按下鼠标按键,再调用 pyautogui.mouseUp(),这只是释放鼠标按键。

import pyautogui

width, height = pyautogui.size()
pyautogui.click(int(width/2), int(height/2), button="right")

上述代码,运行结果是鼠标移动到屏幕中央右击一次。
还支持 pyautogui.doubleClick()方法来左键双击操作。pyautogui.rightClick()和pyautogui.middleClick()方法将分别执行双击右键和双击中键。

图像识别

pyautogui支持识别图片的操作。
假设我们需要点击一下某一个图标,那么我们可以通过locateOnScreen() 方法将图像所在处的坐标返回,比如pyautogui.locateOnScreen(‘ludashiexe.png’)。
在这里插入图片描述
locateOnScreen() 函数返回4个整数的元组,分别代表(最左上角x坐标,最左上角y坐标, 图片宽度, 图片高度)
假设当前我们屏幕上有多个相同图标,则我们可以使用locateAllOnScreen() 函数将返回一个
Generator 对象,可以将它传递给list,生成一个查询当前识别图标的所有位置元组。如果只有找到一次,则返回的列表中只有一个元组。
在这里插入图片描述
我们可以使用pyautogui.center(x, y, width, height)来返回这个图片的中心位置的坐标,然后通过click()方法来进行点击操作。

import pyautogui

for i in list(pyautogui.locateAllOnScreen("red.png")):
    pyautogui.click(pyautogui.center(i), button="left", duration=1)

上述代码执行结果如下:
在这里插入图片描述

拖动鼠标操作

拖动鼠标指的是,在起始坐标位置鼠标按下不松开,再移动到目标位置。
pyautogui提供了pyautogui.dragTo()和pyautogui.dragRel()函数将鼠标拖动到一个新的位置,或相对当前位置的位置。
我们使用上面的图片识别的方法,来实现操作移动桌面上的一个图标。

import pyautogui

# 获取图标的位置
p = pyautogui.locateOnScreen("ludashiexe.png")

# 移动到图标中间
pyautogui.moveTo(pyautogui.center(p), duration=1)

# 拖拽向右移动50位
pyautogui.dragRel(50, 0, duration=1)

# 移动到指定坐标位置
pyautogui.dragTo(500, 500, duration=1)

执行结果如下:在这里插入图片描述

滚动鼠标操作

pyautogui支持pyautogui.scroll()方法来操作滚动鼠标,传一个值来滚动。例如pyautogui.scroll(200)

获取屏幕快照

pyautogui支持pyautogui.screenshot()方法来截屏。

键盘操作

键盘输入

pyautogui.typewrite()方法支持输入键盘上的字符,具体按键对应的字符串需要查看pyautogui.KEYBOARD_KEYS 列表。

按键按下,按键松开

就像 mouseDown() 和 mouseUp() 函数一样,pyautogui.keyDown() 和 pyautogui.
keyUp() 将向计算发送虚拟的按键和释放。
如果需要模拟按下又松开,则可以使用方法pyautogui.press()。

热键组合输入

可以使用 pyautogui.hotkey() 方法来组合输入按键,比如Ctrl+c,Shift+s。pyautogui.hotkey(‘ctrl’, ‘c’)。

我们结合上述方法,来做一个操作,在文本框中,输入一个文本字符串,再回车,再连续按字母‘a’按10次,再使用报错Ctrl+s来保存文档。

import pyautogui

p = pyautogui.locateOnScreen("input.png")

# 点击输入框
pyautogui.click(pyautogui.center(p), button="left", duration=1)

# 在输入框中输入字符串
pyautogui.typewrite("Test PyAutoGui")

# 换行
pyautogui.typewrite(["enter"])

# 再输入框中输入10个字符a
for _ in range(10):
    pyautogui.press("a")

# 再键入Shift+S保存文档
pyautogui.hotkey("ctrl", "s")

执行结果如下:
在这里插入图片描述

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值