这里需要python的pautogui库
PyAutoGUI依赖于pyscreeze、pymsgbox、pytweening,上述命令会自动安装这3个库。安装完成后可以发现,在site-packages\pyautogui有6个文件,名字带java、osx、win、x11的是在不同平台的实现方案,再在__init__.py和__main__.py中检测当前系统平台进行封装。
可以用命令pip install pyautogui 安装
typewrite可以在光标停留位置输入字符串
如果是中文需要配合pyparperclip使用(pyparperclip.copy())
import pyautogui
pyautogui.typewrite('str',interval)#第二个参数是打字间隔时间,可以是数字,也可以这么写
pyautogui.typewrite('str',interval=interval#后面的interval表示具体的数字
typewrite也可以模拟键盘输入,即输入像esc,唱跳rap篮球(ctrl)之类的特殊建
pyautogui.typewrite(['ctrl'])#这里就类似下面这个函数、
pyautogui.press('ctrl')
#还可以这样
pyautogui.keyDown('ctrl')#按下唱跳rap篮球
pyautogui.keyUp('ctrl')#松开唱跳rap篮球
那么怎么按下组合键呢(ctrl+c)
更具前面所学
pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('ctrl')
pyautogui.keyUp('c')
但是这样效率太低了,要四行代码,能不能简化一些呢
pyautogui.hotkey("ctrl","c")
这样一行代码就实现了组合键功能
有效字符如下
['\t', '\n', '\r', '', '!', '"', '#', '$', '%', '&', "'", '(',
')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',
'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',
'browserback', 'browserfavorites', 'browserforward', 'browserhome',
'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',
'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',
'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',
'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',
'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',
'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',
'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',
'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',
'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',
'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',
'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',
'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',
'command', 'option', 'optionleft', 'optionright']
调用screenshot()将返回Image对象(有关详细信息,请参阅Pillow或PIL模块文档)。传递文件名字符串会将屏幕截图保存到文件中,并将其作为Image对象返回。
import pyautogui
im1 = pyautogui.screenshot()
im1.save('my_screenshot.png')
#也可以这样
im2 = pyautogui.screenshot('my_screenshot.png')
但是这样速度会有些慢,所以可以指定一个区域
im=pyautogui.screenshot('image_name',region=(0,0,114,514))
region中的0,0是起始坐标(屏幕坐标是以屏幕左上角为原点,向下为正方向建立y轴,向右建立x轴,后两个参数分别是宽和高
kuan,gao=pyautogui.size()#获取屏幕的基本信息(宽,高)像素
pyautogui.onScreen(坐标)#判断坐标是否在屏幕上
import pyautogui as py
py.position()#返回光标位置坐标
import pyautogui as py
py.moveTo(坐标,duration=time)#光标移动至指定坐标,时间间隔为time
#那如果不知道坐标呢
py.moveRel(相对位置,duration)
与移动光标类似
import pyautogui as py
py.dageTo()
py.dagRel()
参数与moveTo相同,多了一个button参数来确定左键left右键right滚轮键middle
当然也可以这样
import pyautogui as py
py.mouseDown()
py.mouseUp(button=" ",坐标)#移动到坐标位置松开鼠标
或者
py.mouseDown(button="right")
py.moveTO(坐标)
py.mouseUp(button="right")
click函数,用法如下
import pyautogui as py
py.click(button="",clicks=点击次数,interval=相隔时间)
当然也可以
import pyautogui as py
py.doubleclick()
#and
py.tripleclick()
实际过程中往往找不到坐标,而是更具icon图像点击
import pyautogui as py
a=py.locatOnScreen('image_name')#通过文件中的图片寻找坐标,输出一个元组,分别是left,top,wideth,highth
b=py.center(a)#寻找图像中心坐标
然鹅,现实中可能会遇到各种情况导致寻找图像失败
比如截图浏览器图标,希望它自动找到这个icon,但是如果移动浏览器位置,背景的像素点可能要变化
这个时候,参数confidence就非常有用了
import pyautogui as py
py.locatOnScreen("image_names",confidence=0.9)#给程序0.9的自信,忽略0.1的误差
添加参数grayscale=True给locate函数以提供轻微的加速(大约30%-ish)。这会使图像和屏幕截图中的颜色去饱和,从而加快定位速度,但可能导致误判。
import pyautogui as py
py.scroll(10)#向上划10个像素
import pyautogui as py
value=py.alert(text="str",title="title",button="ok")
>>>value
value会显示按钮内容(如果他按了)
很显然,这个好像按不按按钮意义不大,因为只能设置一个按钮
import pyautogui as py
py.confirm(text="hello",title="hello world",buttons=["点赞","打赏","收藏 "])
同样返回值是被点击的按钮的值、
有个输入框
import pyautogui as py
py.prompt(text="",title="",defult="")
只有两个按钮,点击ok,返回输入框的值,点击cancel返回none