PyAutoGui:用代码操作鼠标键盘

PyAutoGui

参考:https://zhuanlan.zhihu.com/p/466800088

参考:https://blog.csdn.net/weixin_38640052/article/details/112387653

安装:

pip3 install pyautogui

引入:

import pyautogui

获取屏幕分辨率

print(pyautogui.size())   # 返回所用显示器的分辨率; 输出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height)  # 1920 1080

鼠标

当前鼠标位置

print(pyautogui.position())

移动

# 将鼠标移动到指定的坐标;duration 的作用是设置移动时间
pyautogui.moveTo(100,300,duration=1)   

# 当前位置右移
pyautogui.moveRel(50, 0, duration=0.25) 

点击

鼠标点击(click版)

pyautogui.click(10,10)   # 鼠标点击指定位置,默认左键
pyautogui.click(10,10,button='left')  # 单击左键
pyautogui.click(1000,300,button='right')  # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中间

鼠标点击(mouse版)

pyautogui.mouseDown() # 鼠标左键按下再松开
pyautogui.mouseUp()
pyautogui.mouseDown(button='right') # 按下鼠标右键
pyautogui.mouseUp(button='right', x=100, y=200) # 移动到(100, 200)位置,然后松开鼠标右键

鼠标双击

pyautogui.doubleClick(10,10)  # 指定位置,双击左键
pyautogui.rightClick(10,10)   # 指定位置,双击右键
pyautogui.middleClick(10,10)  # 指定位置,双击中键

拖拽

# 拖动到指定位置
# 将鼠标拖动到指定的坐标;duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数
pyautogui.dragTo(100,300,duration=1)   

# 按方向拖动
# 向右拖动100px,向下拖动500px, 这个过程持续 1 秒钟
pyautogui.dragRel(100,500,duration=4)   # 第一个参数是左右移动像素值,第二个是上下

鼠标滚轮

pyautogui.scroll(10) # 向上滚动10格
pyautogui.scroll(-10) # 向下滚动10格

按键

pyautogui.keyDown('shift')    # 按下shift
pyautogui.press('4')    # 按下 4
pyautogui.keyUp('shift')   # 释放 shift

组合键

pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')
# 或者
pyautogui.hotkey('ctrl','c')

输出

pyautogui.typewrite('$*……%……¥', 0.5)

特殊顺序输出

pyautogui.typewrite(['T','i','s','left','left','h',])   # 输出:This

特殊按键:

enter(或return 或 \n):回车

shiftleft, shiftright:左右SHIFT键

altleft, altright:左右ALT键

ctrlleft, ctrlright:左右CTRL键

winleft, winright:Win键(windows )

command:command键(Mac OS X )

option:option(Mac OS X)

屏幕

截图

im = pyautogui.screenshot()
im.save('屏幕截图.png')

简单写法:

pyautogui.screenshot(r'C:\my_screenshot.png') # 截全屏并设置保存图片的位置和名称
im = pyautogui.screenshot(r'C:\my_screenshot.png') # 截全屏并设置保存图片的位置和名称
print(im) # 打印图片的属性

屏幕像素点

判断(x,y)是否在屏幕上

x, y = 100, 200
pyautogui.onScreen(x, y) # 结果为true

获取像素点

pix = pyautogui.screenshot().getpixel((220, 200)) # 获取坐标所在屏幕点的RGB颜色
positionStr = ' RGB:(' + str(pix[0]).rjust(3) + ',' + str(pix[1]).rjust(3) + ',' + str(pix[2]).rjust(3) + ')'
print(positionStr) # 打印结果为RGB:( 60, 63, 65)

pix = pyautogui.pixel(220, 200) # 获取坐标所在屏幕点的RGB颜色与上面三行代码作用一样
positionStr = ' RGB:(' + str(pix[0]).rjust(3) + ',' + str(pix[1]).rjust(3) + ',' + str(pix[2]).rjust(3) + ')'
print(positionStr) # 打印结果为RGB:( 60, 63, 65)

像素点匹配

im = pyautogui.screenshot() # 返回屏幕的截图,是一个Pillow的image对象
im.getpixel((500, 500)) # 返回im对象上,(500,500)这一点像素的颜色,是一个RGB元组

pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一个对比函数,对比的是屏幕上(500,500)这一点像素的颜色,与所给的元素是否相同;

找图

# 获得文件图片在现在的屏幕上面的坐标,返回的是一个元组(top, left, width, height)
# 如果截图没找到,pyautogui.locateOnScreen()函数返回None
a = pyautogui.locateOnScreen(r'C:\region_screenshot.png')
print(a) # 打印结果为Box(left=0, top=0, width=300, height=400)

x, y = pyautogui.center(a) # 获得文件图片在现在的屏幕上面的中心坐标
print(x, y) 

简单写法

x, y = pyautogui.locateCenterOnScreen(r'C:\region_screenshot.png') 
print(x, y) 

多目标找图

多目标匹配(for循环)

打印结果为:

Box(left=0, top=0, width=300, height=400)

pyautogui.locateAllOnScreen(r'C:\region_screenshot.png')
for pos in pyautogui.locateAllOnScreen(r'C:\region_screenshot.png'):
  print(pos)

多目标匹配(list)

打印结果为[Box(left=0, top=0, width=300, height=400)]

a = list(pyautogui.locateAllOnScreen(r'C:\region_screenshot.png'))
print(a)

弹窗

普通弹窗

b = pyautogui.alert(text='要开始程序么?', title='请求框', button='OK')
print(b) # 输出结果为OK

确认窗

pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel']) # OK和Cancel按钮的消息弹窗

输入框

# 可以输入的消息弹窗,带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。
pyautogui.prompt(text='', title='', default='')
posted @ 2023-01-24 14:59  虎老狮  阅读(443)  评论(0编辑  收藏  举报