赞
踩
目录
python --version:Python 3.11.8
Pycharm Community:2022.3.3
- numpy==1.26.4
- opencv-python==4.9.0.80
- pillow==10.3.0
- PyAutoGUI==0.9.54
关于屏幕的坐标系,从屏幕的左上角开始为(0,0)坐标
- (0,0) X 递增 -->
- +---------------------------+
- | | Y 递增
- | | |
- | X * Y screen | |
- | | V
- | |
- | |
- +---------------------------+ (X,Y)
获取当前屏幕分辨率的大小,返回一个整型的二元组x,y
- import pyautogui
-
- x, y = pyautogui.size() # 当前屏幕分辨率的大小 (x,y)
- print("screen_size: ", x, "*", y)
获取当前鼠标的位置,返回一个整型二元组x,y
- x, y = pyautogui.position() # 当前鼠标的坐标点 (x,y)
- print("screen_size: ", x, "*", y)
判断一个坐标点是否在屏幕的大小当中,返回一个布尔值
参数:两个整数x,y
- check_onScreen = pyautogui.onScreen(12, 56) # 判断坐标点是否在屏幕中
- print("check_onScreen: ", check_onScreen)
当操控光标移动到边界点时(x==0 || y==0)会报错,将FAILSAFE(故障保护)设为False即可关闭报错。详见moveTo()当中,代码行数:1
将鼠标光标移动到一个特定位置
参数:
x,y,[time(sec)]
(time是移动到目标坐标所花费的时间) 如果time小于0.1s,视为0s,立即移动到目标点.
[参数x/y当中可以传递“None”,默认为光标目前的坐标]
- pyautogui.FAILSAFE = False # 将故障保护关闭
- pyautogui.moveTo(0, 0, 2) # 花费2s移动到0,0
- pyautogui.moveTo(500, 500, 0.8) # 花费0.8s移动到500,500
- pyautogui.moveTo(None, 0, 0.09) # x不变,花费0.09s移动到当前光标的最上端
- pyautogui.moveTo(0, None) # y不变,瞬间移动到当前光标的最左端
以当前光标为中心,分别向x,y移动n个单位像素
参数:
x,y,[time(sec)]
- pyautogui.move(50, 0) # 光标向右移动50像素
- pyautogui.move(0, 50) # 光标向下移动50像素
- pyautogui.move(-25, 0) # 光标向左移动25像素
- pyautogui.move(0, -25) # 光标向上移动25像素
- pyautogui.move(None, 500) # 光标向下移动500像素
按住鼠标左/右/中键,拖动到特定位置
类似于moveTo,不过添加了一项功能
参数:
x,y,[time],[button='left/right/middle']
- pyautogui.dragTo(0, 0, button='left') # 按住左键拖动到0,0
- pyautogui.dragTo(600, 600, 2, button='right') # 按住左键花费2s拖动到600,600
以当前光标为原点,在x,y轴方向按住鼠标左/右/中键拖动n个单位像素
类似于move()
参数:
x,y,[time(sec)]
- pyautogui.drag(25, 25, 1, button='left')
- # 按照左键向右移动25像素,向下移动25像素,共花费2s
持续按住鼠标左/中/右键进行移动操作(按下后不进行后序mouseUp()操作则不会松开对应键位)
参数:
x,y,button='left/right/middle'
- pyautogui.mouseDown(500, 500, button='left')
- # 按下左键后移动到500, 500
移动到某位置后,松开对应键位
参数:
x,y,button='left/right/middle'
- pyautogui.mouseUp(0, 0, button='left')
- # 移动到0, 0后松开左键
使用mouseDown(),moveTo()和mouseUp()能实现一个dragTo()的效果,其实dragTo()就是这几个方法的便捷方法。
[移动到x,y坐标后],模拟鼠标的滚轮操作
参数:
clicks,[x,y] (clicks>0向上滑动,clicks<0向下滑动)
- pyautogui.scroll(1000, x=100, y=500) # 移动到100,500后向上滑动1000单位clicks
- time.sleep(2)
- pyautogui.scroll(-500) # 向下滑动500单位
不知道为什么我这里的x,y设置之后好像并不会先移动到对应的位置呢...
在光标选中的位置上输入对应的字符。
[因为是模拟键盘的操作,所以只能输入英文哦。中文会自动给忽略掉]
当你在执行write函数的时候,按下shift键也会起到单子切换大写的功能。
参数:
字符串 ,[interval=?] (interval是在每个字符之间的输入间隔,可以给整型或浮点数)
- pyautogui.write("hello你好 pyautogui") # 在光标选中位置输入hello pyautogui
- pyautogui.write("hello", interval=1) # 在光标转中位置输入hello,单个字符之间间隔1s
模拟用户按下一个键盘上的键后松开。
参数:
key (key要为pyautogui中 KEYBOARD_KEYS的字符)
[key,key,key...] (将要敲下的一串键组合起来,按顺序敲下)
key,[presses=?],[interval=?] (还可以注明同一个键敲下的次数,以及每次敲下的间隔)
- pyautogui.press(['n', 'i', 'space', 'h', 'a', 'o', 'space'])
- # 切换到中文输入法下模拟来打字哈哈,实际可以使用另一种库来达到输入中文的功能,下面会介绍
- pyautogui.press('a', presses=5)
- pyautogui.press(['h', 'e', 'l', 'l', 'o']) # 实现一个write()
模拟用户持续按住键,和松开键。
参数:
key (key要为pyautogui中 KEYBOARD_KEYS的字符)
- pyautogui.keyDown('ctrl') # 持续按住ctrl键
- pyautogui.press('space') # 按一下空格键
- pyautogui.keyUp('ctrl') # 松开ctrl键
- # 这样就实现了我输入法的转换
press()就是keyDown()和keyUp()的一次搭配使用
搭配关键字with来使用,完成在持续按下某一键中进行后序操作
参数:
key (key要为pyautogui中 KEYBOARD_KEYS的字符)
- with pyautogui.hold('shift'):
- pyautogui.press(['a', 'b', 'c'])
- # 持续按下shift,直到执行完其中的语句
方便按下键盘上的快捷键
参数:
([key,key,key,...])
- pyautogui.hotkey('ctrl', 'shift', 'esc')
- # 按下ctrl,shift,esc
- # 再松开esc,shift,ctrl
- # 把任务管理器喊出来了
显示一个包含文本和单个“确定”按钮的简单消息框。返回单击的按钮的文本。
alert(text='', title='', button='')返回值为button中的文本
- text = pyautogui.alert(text='你好呀', title='消息框', button='ok')
- print(text) # 打印ok
显示带有“确定”和“取消”按钮的消息框。按钮的数量和文本可以自定义。返回单击的按钮的文本。
confirm(text='', title='', buttons=[])返回选中的按钮文本
- text = pyautogui.confirm(text='这是一个确认框', title='confirm',buttons=['yes', 'no'])
- print(text) # 返回点击的按钮文本
显示一个带有文本输入和“确定”和“取消”按钮的消息框。返回输入的文本,如果单击了“取消”,则返回None
prompt(text='', title='' , default='') # default是输入框中默认文本/提示词点击确认返回输入文本,点击取消返回None
- text = pyautogui.prompt(text='输入框', title='prompt', default='随便写点吧')
- print(text) # 点击确认返回输入文本,点击取消返回None
显示一个带有文本输入和“确定”和“取消”按钮的消息框。
password(text='', title='', default='', mask='*') # mask是输入文本后进行隐藏并显示的字符返回输入的文本,点击取消则返回None
- text = pyautogui.password(text='输入您的密码', title='password', default='输入密码', mask='*')
- print(text)
PyAutoGUI 可以截取屏幕截图,将它们保存到文件中,并在屏幕中定位图像。如果您有一个小图像,例如,需要单击一个按钮并希望在屏幕上找到它,这将非常有用。这些功能由随 PyAutoGUI 一起安装的 PyScreeze 模块提供。
屏幕截图功能需要 Pillow 模块。OS X 使用操作系统附带的命令 screencapture
。Linux 使用该 scrot
命令,可以通过运行 sudo apt-get install scrot
来安装。
调用 screenshot()
将返回一个 Image 对象
参数:
[图片保存路径], [region=(起始x,起始y,向右n个像素,向下n个像素)]
- image = pyautogui.screenshot() # 仅返回Image对象 截图默认为全屏
- saveImage = pyautogui.screenshot('image.png') # 返回Image对象且保存截图
- im = pyautogui.screenshot('image.png', region=(0, 0, 200, 200)) # 截图在(0,0)置长为200,宽为200
这些定位函数,被搜索范围都不能被其他东西覆盖哦,要在你肉眼的范围内才能被搜索到。
来获取屏幕坐标。返回值是一个 4 整数元组:(left、top、width、height)
参数:
图片的路径,[confidence=?],[grayscale=False/True],[region=(left、top、width、height)]
- location = pyautogui.locateOnWindow('csdn.png')
- print(location)
对于返回值可以使用center()函数处理,获取范围的中心点。
获取一个范围内的中心点.
参数:
一个整数四元组
- location = pyautogui.locateOnScreen('csdn.png', confidence=0.9)
- print(location)
- point = pyautogui.center(location)
- print(point)
就是一个locatOnScreen()结合了center(),直接返回识别到的区域的中心坐标点
参数:
图片的路径,[confidence=?],[grayscale=False/True],[region=(left、top、width、height)]
- location = pyautogui.locateOnScreen('csdn.png', confidence=0.9)
- print(location)
- point = pyautogui.center(location)
- print(point)
- point = pyautogui.locateCenterOnScreen('csdn.png', confidence=0.9)
- print(point)
locateAllOnScreen()
如果想要抓捕多个与目标图片一致的区域,可以使用这个方法。返回一个生成器,该生成器为图像在屏幕上的位置生成(左、上、宽、高)元组。
参数:
图片的路径,[confidence=?],[grayscale=False/True],[region=(left、top、width、height)]
locate()
在一个范围内寻找目标图片,如果找不到则在整个屏幕中找
参数:
图片的路径,region=(left、top、width、height),[confidence=?],[grayscale=False/True]
locateAll()
与locateAllOnScreen()类似。在一个特定的范围内寻找全部匹配的区域,并返回生成器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。