当前位置:   article > 正文

Pyautogui--键盘&鼠标控制工具_pyautogui.hotkey

pyautogui.hotkey

一、安装教程(Ubuntu 20.04)

  1. # sudo apt-get install python3-pip
  2. # pip3 install pyautogui
  3. # sudo apt-get install scrot python3-tk python3-dev

一般这样就可以了

二、使用教程

导入库

import pyautogui

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

获取当前鼠标位置 

print(pyautogui.position())

获取当前屏幕的分辨率 

print(pyautogui.size())

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

  1. x=10
  2. y=20
  3. print(pyautogui.onScreen(x, y))

暂停2.5s

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

pyautogui.PAUSE = 2.5

鼠标移动:

移动时间为1s

  1. #1、绝对移动
  2. x = 200
  3. y = 100
  4. num_seconds = 1 
  5. pyautogui.moveTo(x, y, duration=num_seconds)  
  6. #2、相对移动
  7. xOffset = 30
  8. yOffset = -50
  9. num_seconds = 0.5
  10. pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)

鼠标拖动:

按下鼠标左键移动鼠标。

  1. #绝对移动
  2. x = 200
  3. y = 100
  4. num_seconds= 1
  5. pyautogui.dragTo(x, y, duration=num_seconds)  
  6. # 相对移动
  7. xOffset = 30
  8. yOffset = -50
  9. num_seconds = 0.5
  10. pyautogui.dragRel(xOffset, yOffset, duration=num_seconds)

鼠标点击:

  1. # 将鼠标移动到(moveToX,moveToY)位置,点击鼠标num_of_clicks次,每次点击间隔
  2. # secs_between_clicks秒
  3. # button表示单击方式,'left'左键单击,'middle'中键单击,'right'右键单击
  4. moveToX = 500
  5. moveToY = 600
  6. num_of_clicks = 1
  7. secs_between_clicks = 1
  8. pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

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

  1. moveToX = 10
  2. moveToY = 20
  3. # 右键单击
  4. pyautogui.rightClick(x=moveToX + 50, y=moveToY)  
  5. # 中键单击
  6. pyautogui.middleClick(x=moveToX + 50, y=moveToY)  
  7. # 左键双击
  8. pyautogui.doubleClick(x=moveToX + 50, y=moveToY)  
  9. # 左键三击
  10. pyautogui.tripleClick(x=moveToX + 50, y=moveToY)  

鼠标滚动:

  1. moveToX = 100
  2. moveToY = 200
  3. # 鼠标在当前位置向下滑动100格
  4. pyautogui.scroll(clicks=-100)
  5. # 鼠标移动到(moveToX,moveToY)位置,然后向上滚动150格
  6. pyautogui.scroll(clicks=150, x=moveToX, y=moveToY)

示例一:

  1. # 鼠标移动到(moveToX,moveToY)位置,鼠标左键按下
  2. pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
  3. # 鼠标移动到(moveToX,moveToY)位置,鼠标右键松开(按下右键的情况下)
  4. pyautogui.mouseUp(x=moveToX, y=moveToY, button='right')
  5. # 鼠标在当前位置,按下中键
  6. pyautogui.mouseDown(button='middle')

缓动/渐变函数:

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

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

  1. moveToX = 100
  2. moveToY = 100
  3. # 开始慢,结束快
  4. pyautogui.moveTo(moveToX + 5 , moveToY+ 45, 2, pyautogui.easeInQuad)  
  5. # 开始快,结束慢   
  6. pyautogui.moveTo(moveToX + 15, moveToY+ 35, 2, pyautogui.easeOutQuad)
  7. # 快速开始和结束,中间缓慢
  8. pyautogui.moveTo(moveToX + 25, moveToY+ 25, 2, pyautogui.easeInOutQuad)  
  9. # 最后反弹
  10. pyautogui.moveTo(moveToX + 35, moveToY+ 15, 2, pyautogui.easeInBounce)  
  11. # 反复横跳
  12. pyautogui.moveTo(moveToX + 45, moveToY+ 5, 2, pyautogui.easeInElastic)

从键盘输入文字:

  1. # 在当前位置输入文字text,每个字符输入间隔secs_between_keys秒
  2. text = 'Hello world!\n'
  3. secs_between_keys = 0.1
  4. pyautogui.typewrite(message=text, interval=secs_between_keys)  
  5. # 在当前位置按下键盘各种键
  6. pyautogui.typewrite(['\t', 'a', 'b', 'c', 'left', 'backspace', 'enter', 'f1','\n'], interval=secs_between_keys)

查看所有支持的按键:

print(pyautogui.KEYBOARD_KEYS)

按下快捷键:

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

  1. # ctrl+c 复制文字
  2. pyautogui.hotkey('ctrl', 'c')  
  3. # ctrl+v 粘贴文字
  4. pyautogui.hotkey('ctrl', 'v')

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

  1. # 按下ctrl键
  2. pyautogui.keyDown('ctrl')
  3. # 按下v键,相当文字粘贴
  4. pyautogui.keyDown('v')
  5. # 松开ctrl键盘
  6. pyautogui.keyUp('ctrl')

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

  1. #  按下shift键
  2. pyautogui.keyDown('shift')
  3. pyautogui.press('left')
  4. pyautogui.press('left')
  5. pyautogui.press('left')
  6. #  松开shift键
  7. pyautogui.keyUp('shift')
  8. # 按下三个left键,注意括号内的数据格式
  9. pyautogui.press(['left', 'left', 'left'])
  10. # 按left键五次
  11. pyautogui.press('left', presses=5)

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

  1. # 按住shift
  2. with pyautogui.hold('shift'):
  3.     # 连续按left,然后松开shift
  4.     pyautogui.press(['left', 'left', 'left'])
  5. # 上面代码功能和下面代码实现功能相同
  6. # 按下shift键
  7. pyautogui.keyDown('shift')
  8. pyautogui.press('left')
  9. pyautogui.press('left')
  10. pyautogui.press('left')
  11. # 松开shift键
  12. pyautogui.keyUp('shift')

消息框函数:

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

  1. # 警告窗口
  2. alert_result = pyautogui.alert('点击确定返回字符串OK')
  3. # 确认窗口
  4. confirm_result = pyautogui.confirm('点击确定返回字符串OK,点击取消返回字符串Cancel')
  5. # 点击ok保存输入的文字,点击Cancel返回None
  6. prompt_result = pyautogui.prompt('输入文字')
  7. # 点击ok保存输入的密码,点击Cancel返回None
  8. # default默认文字,mask用什么符号代替输入的密码
  9. password_result = pyautogui.password(text='', title='', default='', mask='*')

截图函数:

先安装:sudo apt-get install scrot

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

  1. # 截屏返回result对象
  2. result = pyautogui.screenshot()
  3. # result是Image对象
  4. print(type(result))
  5. # 保存图像
  6. result.save('result1.jpg')
  7. # 展示图片
  8. #result.show()
  9. # imageFilename参数设置文件保存为止,在截屏前保存图片到本地foo.png文件
  10. # region设置截图区域[x,y,w,h],以(x,y)为左上角顶点,截宽w,高h的区域
  11. 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。

  1. 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区域必须比待搜索截图区域大,否则会引发错误:

  1. result = pyautogui.locateOnScreen('result1.jpg', region=(0,0, 300, 400))
  2. 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元组传递给它:

  1. # 颜色匹配
  2. pyautogui.pixelMatchesColor(100, 200, (255, 255, 255))
  3. # tolerance参数可以指定红、绿、蓝3种颜色误差范围
  4. pyautogui.pixelMatchesColor(100, 200, (248, 250, 245), tolerance=10)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/121115
推荐阅读
相关标签
  

闽ICP备14008679号