Pyautogui--键盘&鼠标控制工具

这篇具有很好参考价值的文章主要介绍了Pyautogui--键盘&鼠标控制工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、安装教程(Ubuntu 20.04)

# sudo apt-get install python3-pip
# pip3 install pyautogui
# sudo apt-get install scrot python3-tk python3-dev

一般这样就可以了

二、使用教程

导入库

import pyautogui

屏幕上的位置由X和Y坐标表示。坐标从0开始

Pyautogui--键盘&鼠标控制工具

获取当前鼠标位置 

print(pyautogui.position())

获取当前屏幕的分辨率 

print(pyautogui.size())

判断某个坐标是否在屏幕上 

x=10

y=20

print(pyautogui.onScreen(x, y))

暂停2.5s:

防止程序出问题,一般要在执行完后先停几秒

pyautogui.PAUSE = 2.5

鼠标移动:

移动时间为1s

#1、绝对移动
x = 200
y = 100
num_seconds = 1 
pyautogui.moveTo(x, y, duration=num_seconds)  

#2、相对移动
xOffset = 30
yOffset = -50
num_seconds = 0.5
pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)

鼠标拖动:

按下鼠标左键移动鼠标。

#绝对移动
x = 200
y = 100
num_seconds= 1
pyautogui.dragTo(x, y, duration=num_seconds)  


# 相对移动
xOffset = 30
yOffset = -50
num_seconds = 0.5
pyautogui.dragRel(xOffset, yOffset, duration=num_seconds)

鼠标点击:

# 将鼠标移动到(moveToX,moveToY)位置,点击鼠标num_of_clicks次,每次点击间隔
# secs_between_clicks秒
# button表示单击方式,'left'左键单击,'middle'中键单击,'right'右键单击
moveToX = 500
moveToY = 600
num_of_clicks = 1
secs_between_clicks = 1

pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

下面的函数都可以用click()代替,只是方便阅读

moveToX = 10
moveToY = 20

# 右键单击
pyautogui.rightClick(x=moveToX + 50, y=moveToY)  

# 中键单击
pyautogui.middleClick(x=moveToX + 50, y=moveToY)  

# 左键双击
pyautogui.doubleClick(x=moveToX + 50, y=moveToY)  

# 左键三击
pyautogui.tripleClick(x=moveToX + 50, y=moveToY)  

鼠标滚动:

moveToX = 100
moveToY = 200

# 鼠标在当前位置向下滑动100格
pyautogui.scroll(clicks=-100)

# 鼠标移动到(moveToX,moveToY)位置,然后向上滚动150格
pyautogui.scroll(clicks=150, x=moveToX, y=moveToY)

示例一:

# 鼠标移动到(moveToX,moveToY)位置,鼠标左键按下
pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')

# 鼠标移动到(moveToX,moveToY)位置,鼠标右键松开(按下右键的情况下)
pyautogui.mouseUp(x=moveToX, y=moveToY, button='right')

# 鼠标在当前位置,按下中键
pyautogui.mouseDown(button='middle')

缓动/渐变函数:

没有什么实际作用,只是让操作看起来更复杂

可以使用print(pyautogui.ease*?)函数查看

moveToX = 100
moveToY = 100

# 开始慢,结束快
pyautogui.moveTo(moveToX + 5 , moveToY+ 45, 2, pyautogui.easeInQuad)  

# 开始快,结束慢   
pyautogui.moveTo(moveToX + 15, moveToY+ 35, 2, pyautogui.easeOutQuad)

# 快速开始和结束,中间缓慢
pyautogui.moveTo(moveToX + 25, moveToY+ 25, 2, pyautogui.easeInOutQuad)  

# 最后反弹
pyautogui.moveTo(moveToX + 35, moveToY+ 15, 2, pyautogui.easeInBounce)  

# 反复横跳
pyautogui.moveTo(moveToX + 45, moveToY+ 5, 2, pyautogui.easeInElastic)

从键盘输入文字:

# 在当前位置输入文字text,每个字符输入间隔secs_between_keys秒
text = 'Hello world!\n'
secs_between_keys = 0.1
pyautogui.typewrite(message=text, interval=secs_between_keys)  

# 在当前位置按下键盘各种键
pyautogui.typewrite(['\t', 'a', 'b', 'c', 'left', 'backspace', 'enter', 'f1','\n'], interval=secs_between_keys)

查看所有支持的按键:

print(pyautogui.KEYBOARD_KEYS)

按下快捷键:

1、使用hotkey()按下快捷键,同时按两个不松开

# ctrl+c 复制文字
pyautogui.hotkey('ctrl', 'c')  

# ctrl+v 粘贴文字
pyautogui.hotkey('ctrl', 'v')

2、使用keyDown()按下键盘,keyUp()松开键盘

# 按下ctrl键
pyautogui.keyDown('ctrl')

# 按下v键,相当文字粘贴
pyautogui.keyDown('v')

# 松开ctrl键盘
pyautogui.keyUp('ctrl')

3、使用press():按下再释放

#  按下shift键
pyautogui.keyDown('shift')
pyautogui.press('left')
pyautogui.press('left')
pyautogui.press('left')

#  松开shift键
pyautogui.keyUp('shift')

# 按下三个left键,注意括号内的数据格式
pyautogui.press(['left', 'left', 'left'])

# 按left键五次
pyautogui.press('left', presses=5)

4、hold():一直按住不松

# 按住shift
with pyautogui.hold('shift'):

    # 连续按left,然后松开shift
    pyautogui.press(['left', 'left', 'left'])


# 上面代码功能和下面代码实现功能相同
# 按下shift键
pyautogui.keyDown('shift')
pyautogui.press('left')
pyautogui.press('left')
pyautogui.press('left')

# 松开shift键
pyautogui.keyUp('shift')

消息框函数:

向用户展示信息或者需要和用户互动

# 警告窗口
alert_result = pyautogui.alert('点击确定返回字符串OK')

# 确认窗口
confirm_result = pyautogui.confirm('点击确定返回字符串OK,点击取消返回字符串Cancel')

# 点击ok保存输入的文字,点击Cancel返回None
prompt_result = pyautogui.prompt('输入文字')

# 点击ok保存输入的密码,点击Cancel返回None
# default默认文字,mask用什么符号代替输入的密码
password_result = pyautogui.password(text='', title='', default='', mask='*')

截图函数:

先安装:sudo apt-get install scrot

官方说screenshot()函数大概需要100毫秒,但实际需要3秒左右且常常找不到图片类似区域。

# 截屏返回result对象
result = pyautogui.screenshot()
# result是Image对象
print(type(result))

# 保存图像
result.save('result1.jpg')

# 展示图片
#result.show()

# imageFilename参数设置文件保存为止,在截屏前保存图片到本地foo.png文件
# region设置截图区域[x,y,w,h],以(x,y)为左上角顶点,截宽w,高h的区域
result = pyautogui.screenshot(imageFilename='result2.jpg',region=[10,20,100,50])

图像定位函数:

locateOnScreen(image, grayscale=False):

在屏幕中,返回和image图片最类似区域的坐标(left, top, width, height),如果没找到返回None。grayscale设置是否按照灰度查找。

locateCenterOnScreen(image, grayscale=False):

在屏幕中,返回和image图片最类似区域的中心坐标(x, y),如果没找到返回None。


locateAllOnScreen(image, grayscale=False):

在屏幕中,返回和image图片所有类似区域的坐标(left, top, width, height)的生成器

locate(needleImage, haystackImage, grayscale=False):

在haystackImage中,返回和image图片最类似区域的坐标(left, top, width, height)。

locateAll(needleImage, haystackImage, grayscale=False):

在haystackImage中,返回和image图片所有类似区域的坐标(left, top, width, height)的生成器

定位函数耗时很长,好几秒钟才行。加速它们的最好方法是传递一个region参数(一个(左、上、宽、高)的4整数元组)来只搜索屏幕的较小区域而不是全屏。但是这个region区域必须比待搜索截图区域大,否则会引发错误:

result = pyautogui.locateOnScreen('result1.jpg', region=(0,0, 300, 400))

result = pyautogui.locate(needleImage='result1.jpg', haystackImage='result.jpg', confidence=0.5, region=(0,0, 300, 400))

可以传递grayscale=True给定位函数以提供轻微加速(大约30%左右)。但会降低图像和屏幕截图的颜色饱和度,加快定位速度,但可能会导致误报匹配。

result_location = pyautogui.locateOnScreen('result.jpg', grayscale=True,confidence=0.6)

如果只需要验证单个像素是否与给定像素匹配,可以调用该pixelMatchesColor()函数,并将其表示的颜色的X坐标、Y坐标和RGB元组传递给它:文章来源地址https://www.toymoban.com/news/detail-488724.html

# 颜色匹配

pyautogui.pixelMatchesColor(100, 200, (255, 255, 255))

# tolerance参数可以指定红、绿、蓝3种颜色误差范围

pyautogui.pixelMatchesColor(100, 200, (248, 250, 245), tolerance=10)

到了这里,关于Pyautogui--键盘&鼠标控制工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python的pyautogui库(鼠标,键盘操作篇)

    图片操作篇可以观看https://blog.csdn.net/m0_61741706/article/details/126898616 pyautogui库可以模仿人去点击输出和键盘,相比selenium库,pyautogui库更方便,更便捷 下载就用pip直接下载,后者用清华源下载  出现这样就是下载成功 之后引入库,并判断电脑屏幕的分辨率 接下来是控制鼠标移

    2024年02月12日
    浏览(63)
  • PyAutoGUI Python 库,可以用于自动化鼠标和键盘的输入

    PyAutoGUI 是一个 Python 库,可以用于自动化鼠标和键盘的输入。它可以模拟人类的鼠标和键盘操作,例如单击、双击、拖动、按键、释放键等。PyAutoGUI 还提供了一些其他功能,例如屏幕截图和图像识别等。 以下是几个 PyAutoGUI 的典型案例和代码: 这些示例只是 PyAutoGUI 的一小部

    2024年02月10日
    浏览(54)
  • python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作

    目录 鼠标操作 获取鼠标所在位置坐标 获取鼠标所在位置的RGB值 鼠标点击 鼠标按下和释放 鼠标移动 鼠标拖拽 滚轮滚动 键盘操作 输入英文字符 普通按键操作press 按下与抬起 组合键hotkey 持续按键hold 弹出对话框 alert confirm prompt password 获取鼠标所在位置坐标 获取鼠标所在位

    2024年02月12日
    浏览(43)
  • python操作windows桌面实现鼠标、键盘操作,python之pyautogui库文档详解

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux)。 源码地址: https://github.com/asweigart/pyautogui 官方文档: https://github.com/asweigart/pyautogui/blob/master/docs/simplified-chinese.ipynb PyAutoGUI可以模拟鼠标的移动、点击、拖

    2024年02月04日
    浏览(54)
  • 【PyAutoGUI操作指南】02 鼠标控制功能+获取当前坐标+鼠标事件+鼠标滚动查询

    X坐标从左侧的0开始,向右增加,Y坐标从顶部的0开始,向下递增。 左上角的像素位于坐标0,0。如果屏幕分辨率为1920 x 1080,则右下角的像素将为1919,1079(因为坐标从0开始,而不是1)。 3.1.1 输出屏幕分辨率大小与鼠标光标位置 3.1.2 判断位置是否在屏幕内 3.2.1 moveTo()将鼠标

    2024年02月09日
    浏览(55)
  • Tool之synergyc:synergyc的简介、安装、使用方法(鼠标键盘控制两台或多台电脑)之详细攻略

    Tool之synergyc:synergyc的简介、安装、使用方法(鼠标键盘控制两台或多台电脑)之详细攻略 目录 synergyc的简介 (1)、Synergy软件特点 synergyc的安装 synergyc的使用方法       synergyc是用一套鼠标键盘控制两台或多台电脑,但是只适合win7及以下的,win10有时候不适用;无需外部硬件设备

    2024年02月13日
    浏览(40)
  • 键盘怎么控制鼠标?键盘控制鼠标实现点击和移动

    鼠标在电脑操作过程中非常重要,可是有时遇到尴尬的问题,就是摸鱼的时候觉得一直点击鼠标声音太大,或者舍友都睡觉了,你突然之间需要浏览一些网页,一直点击鼠标会产生很大的噪声,这时候该怎么办呢?如果你是笔记本,配合鼠标版可以解决。如果你正好有一个静

    2024年02月06日
    浏览(55)
  • JAVA 鼠标控制与键盘输入控制

    该类是JDK定义的电脑系统的抽象类,可以用来模拟实现鼠标点击与键盘输入等信息 简单实现一个自动抢票代码: InputEvent.BUTTON1_MASK 左键 (食指点击) InputEvent.BUTTON2_MASK 中键 (滚轮) InputEvent.BUTTON3_MASK 右键(中指点击) 得到的信息需要根据屏幕--显示设置--缩放与布局的百分

    2024年02月13日
    浏览(39)
  • python编程控制键盘鼠标

    1.安装Pywin32 下载完成后直接运行。 2. 模拟按键      keybd_event(bVk, bScan, dwFlags, dwExtraInfo)       第一个参数:虚拟键码(键盘键码对照表见附录);       第二个参数:硬件扫描码,一般设置为0即可;       第三个参数:函数操作的一个标志位,如果值为KEYEVENTF_EXTENDEDKEY则

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包