pyautogui

全局使用模块

import pyautogui

防故障

pyautogui.FAILSAFE = True  # 防止故障功能   默认这项功能为True, 将鼠标移动到左上角从而中止程序

pyautogui.PAUSE = 1  # 全部pyautogui指令延迟执行

公共参数

(duration = 1)  duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数

屏幕

坐标
0,0       X increases -->
+---------------------------+
|                           | Y increases
|                           |     |
|   1920 x 1080 screen      |     |
|                           |     V
|                           |
|                           |
+---------------------------+ 1919, 1079

## 屏幕
pyautogui.size()      (1920, 1080)屏幕尺寸
pyautogui.position()   (187, 567)鼠标绝对位置
pyautogui.onScreen(x,y) 判断坐标(x,y)是否在屏幕内,返回True,Flase  以右上角为(0,0)点
pyautogui.mouseInfo() #获取鼠标的信息  将弹出GUI界面,鼠标的信息将在GUI界面中实时刷新
pyautogui.onScreen(x, y) # 判断该点是否在屏幕上,返回布尔值

鼠标功能

公共参数:  
(x=距离, y=距离, clicks=点击次数, interval=间隔时间, duration=移动间隔,button='按键')
                              

#   点击
pyautogui.click(x, y, button='left/right/middle')  # 模拟鼠标点击(默认是左键)。  
                   还可以有: interval=0.5间隔时间   duration=0.2移动间隔(不指定则立即移动)
                   
pyautogui.rightClick(x,y)   # 模拟右键点击。
pyautogui.middleClick(x,y)  # 模拟中键点击。
pyautogui.doubleClick(x,y)  # 模拟左键双击。
pyautogui.doubleClick(x=100, y=150, button="left") # 鼠标在(100,150)指定位置+指定鼠标按键双击
pyautogui.tripleClick() # 鼠标当前位置左击三下
pyautogui.leftClick()       # 双击左键
pyautogui.middleClick()     # 双击中键
pyautogui.tripleClick()     # 双击屏幕
pyautogui.mouseDown()   # 鼠标按下   左键一直按着   参数: x=moveToX, y=moveToY, button='left'
pyautogui.mouseUp()    # 鼠标释放                 参数: x=moveToX, y=moveToY, button='left'
pyautogui.mouseDown(button='right') # 按下鼠标右键
pyautogui.mouseUp(button='right', x=100, y=200) # 移动到(100, 200)位置,然后松开鼠标右键



#  移动                    button---->'left''middle''right'
pyautogui.moveTo(x, y,s)  # 将鼠标移动到指定的 x、y 坐标,间隔时间。   绝对位置
pyautogui.moveRel(x, y, duration=4)  # 第一个参数是左右移动像素值,第二个是上下

#  拖动
pyautogui.dragTo(x, y,duration=间隔时间,button='right/left/middle')  # 按下左键移动鼠标经行拖动。   绝对位置
pyautogui.dragRel(x, y,duration=间隔时间,button='right/left/middle')   # 第一个参数是左右移动像素值,第二个是上下


#  滑动
pyautogui.scroll(参数)  # 模拟滚动滚轮。正参数表示向上滚动,负参数表示向下滚动。
pyautogui.scroll(10, x=100, y=100) # 移动到(100, 100)位置再向上滚动10个距离

键盘功能

#  按键  
pyautogui.press('key',presses=按下次数,interval=间隔时间) # 按下并释放给定键 (按键的过程: 组合键  keyDown + keyUp)
pyautogui.press(['key1', 'key2', 'key3'])    # 按下多个按键
pyautogui.keyDown('key')  # 模拟按下给定键。
pyautogui.keyUp('key')    # 模拟释放给定键。
pyautogui.hotkey('key1', 'key2', 'key3')  #快捷键 按顺序按下给定键,再以相反的顺序释放



#  输入
pyautogui.typewrite("message",interval=0.5)  # 键入给定消息字符串中的字符,  字符串间隔时间。
pyautogui.typewrite('key1', 'key2', 'key3', 'key4')  # 键入给定键字符串。 (字符 + 按键)
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=键入时间)
pyautogui.write("内容", interval=字符写入间隔时间)



# 缓动/渐变函数可以改变光标移动过程的速度和方向。通常鼠标是匀速直线运动,这就是线性缓动/渐变函数。
# PyAutoGUI有30种缓动/渐变函数,可以通过pyautogui.ease*?查看。
# 开始很慢,不断加速
pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)
# 开始很快,不断减速
pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad)
# 开始和结束都快,中间比较慢
pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad)
# 一步一徘徊前进
pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce)
# 徘徊幅度更大,甚至超过起点和终点
pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic)

Keys

KEYBOARD_KEYS
以下是有效字符串传递给press(),keyDown(),keyUp(),和hotkey()功能:

['\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']




键盘字符串	说明
enter(或return 或 \n)	回车
esc	ESC键
shiftleft, shiftright	左右SHIFT键
altleft, altright	左右ALT键
ctrlleft, ctrlright	左右CTRL键
tab (\t)	TAB键
backspace, delete	BACKSPACE 、DELETE键
pageup, pagedown	PAGE UP 和 PAGE DOWN键
home, end	HOME 和 END键
up, down, left,right	箭头键
f1, f2, f3…. f12	F1…….F12键
volumemute, volumedown,volumeup	声音变大变小静音(有些键盘没有)
pause	PAUSE键,暂停键
capslock	CAPS LOCK 键
numlock	NUM LOCK 键
scrolllock	SCROLLLOCK 键
insert	INSERT键
printscreen	PRINT SCREEN键
winleft, winright	Win键(windows )
command	command键(Mac OS X )
option	option(Mac OS X)

窗口功能

弹框

#####  弹出信息框  警报/确认/提示/密码框
print(pyautogui.alert(title='标题', text='窗口内容',  button='OK'))  # 单个按钮 返回按钮对应文本
print(pyautogui.confirm(title='标题', text='窗口内容()', buttons=['OK', 'Cancel']))  # 多按钮  返回按钮对应文本
print(pyautogui.prompt(text='', title='', default=''))  # 文本输入框+多按钮  返回文本框内容
print(pyautogui.password(title='', text='', default='', mask='*'))  # 密码输入框+多按钮  返回文本框内容

截图

im = pyautogui.screenshot()  # 返回屏幕的截图,是一个Pillow的image对象(pip install pillow)
im = pyautogui.screenshot('保存位置/x.png', region=(0, 0, 300, 400)) 截取屏幕上指定目标区域,并且截图保存到指定位置
                                                  目标点 目标点宽度 长度( 捕获的区域的左、上、宽和高 )
im.save('屏幕截图.png')  # 保存截图
im.getpixel((500, 500))  # 返回im对象上,(500,500)这一点像素的颜色,是一个RGB元组
pyautogui.pixelMatchesColor(500, 500, (12, 120, 400)) # 是一个对比函数,对比的是屏幕上(500,500)这一点像素的颜色,与所给的元素是否相同;

图像识别

# 定位到图片快捷方法       moveTo('图片.png')  click('图片.png')

# 获取图片位于屏幕的四点坐标    pyautogui.locateOnScreen('图片.png')
# 获取图像位于屏幕的中心点      pyautogui.center(pyautogui.locateOnScreen('图片.png'))
                           pyautogui.locateCenterOnScreen('图片.png')


# 图像识别  
       根据指定区域的图像与pyautogui自动后台获取的图像进行对比/(根据指定位置像素点进行对比),返回比对后指定区域的中心坐标。
过程1:获取屏幕截图
        im = pyautogui.screenshot()  # 默认全屏,可指定大小
        im.save('屏幕截图.png')

过程2: 识别图像    主要
        # 图像识别(一个)
        btm = pyautogui.locateOnScreen('zan.png')
        print(btm)  # Box(left=1280, top=344, width=22, height=22)

        # 图像识别(多个)
        btm = pyautogui.locateAllOnScreen('zan.png')
        print(list(btm))  
            # [Box(left=1280, top=344, width=22, height=22), Box(left=25, top=594, width=22, height=22)]

        # 限定屏幕上查找的范围
        pyautogui.locateCenterOnScreen(‘image’, region=(x,y,w,h) ) 
        图片匹配功能,查找image图片在屏幕中的位置,region限制查找范围


        # 提高识别准确度   pip install opencv-python       添加:confidence参数设置权重值
        pyautogui.locateOnScreen('dz.png', confidence=0.7)

        # 获取指定目标中心点 pyautogui.center(pyautogui.locateOnScreen('dz.png', confidence=0.7))  精准
                         pyautogui.locateCenterOnScreen('R.png')

        # 灰度匹配,提速,但是不精准  pyautogui.locateOnScreen('图片.png', grayscale=True)
         

一步到位:  pyautogui.moveTo('star.png')  直接移动到目标区域(底层调用上方识别函数,可能准确度不如上方设置了权重高)
                    click('star.png')   直接点击图像
                    所有点击,移动函数皆可传入图像

文档

moveTo(x,y)将鼠标移动到指定的 x、y 坐标。
moveRel (xOffset,yOffset)相对于当前位置移动鼠标。
dragTo(x,y)按下左键移动鼠标。
dragRel (xOffset,yOffset)按下左键,相对于当前位置移动鼠标。
click(x,y,button)模拟点击(默认是左键)。
rightClick() 模拟右键点击。
middleClick() 模拟中键点击。
doubleClick() 模拟左键双击。
mouseDown(x,y,button)模拟在 x、y 处按下指定鼠标按键。
mouseUp(x,y,button)模拟在 x、y 处释放指定键。
scroll (units)模拟滚动滚轮。正参数表示向上滚动,负参数表示向下滚动。
typewrite(message)键入给定消息字符串中的字符。
typewrite([key1,key2,key3])键入给定键字符串。
press(key)按下并释放给定键。
keyDown(key)模拟按下给定键。
keyUp(key)模拟释放给定键。
hotkey([key1,key2,key3])模拟按顺序按下给定键字符串,然后以相反的顺序释放。
screenshot() 返回屏幕快照的 Image 对象

鼠标点击:  click()    过程也可分解为mouseDown()、mouseUp();另有在click()之上封装的rightClick()、middleClick()、doubleClick()、tripleClick()等函数。
控制按键, press()    按键动作往细分解包含keyDown()和keyUp()两个过程;在此基础上封装,有typewrite()和hotkey()两个高阶一点的函数,分别用于输入字符串和按快捷键。

示例

鼠标实时绝对地址

import pyautogui

while True:
    x, y = pyautogui.position()  # 得到当前鼠标位置;输出:Point(x=200, y=800)
    print(x, y)

图像位置识别

import pyautogui

num = 0.1
NUM = 1
for i in range(0, 9):
    #  单个指定图像识别 (指定图像在屏幕上只有一个目标)
    a, b, c, d = pyautogui.locateOnScreen('chrome.png', confidence=num)
    # a, c = pyautogui.locateCenterOnScreen('tv.png')  # # 获得文件图片在现在的屏幕上面的中心坐标
    # x, y = pyautogui.center(pyautogui.locateOnScreen('tv.png', confidence=num))  # 获得文件图片在现在的屏幕上面的中心坐标
    print("当前权重值:{}".format(num), "位置:{},{}".format(a, c))
    num += 0.1
    pyautogui.doubleClick(a, c)

    # #  多个指定一致图像识别(指定图像在屏幕上有多个目标)
    # btm = pyautogui.locateAllOnScreen('dz.png',confidence = 0.7)
    # # print(list(btm))
    # for i in list(btm):
    #     A, B, C, D = i
    #     # print("第{}个目标已找到---{}".format(NUM, i))
    #     print("第{}个目标已找到---位置({},{})".format(NUM, A, C))
    #     NUM += 1
    #     pyautogui.click(A, C, 2)
    #
    # print('\n\n')
    # break

自动点赞

import pyautogui
import time
pyautogui.FAILSAFE = True
time.sleep(1)


def like():   # 主函数
    time.sleep(0.1)
    if pyautogui.locateOnScreen('dz.png'):
        left, top, width, height = pyautogui.locateOnScreen('dz.png', confidence=0.7)
        center = pyautogui.center((left, top, width, height))
        pyautogui.click(center)
        print('点赞成功!')

while True:
    allLocation = pyautogui.locateAllOnScreen('dz.png')
    if len(list(allLocation)) > 0:   # 判断屏幕上目标个数是否存在
        like()   # 调用点赞函数
    else:   # 如果没目标则滚动屏幕
        try:
            pyautogui.scroll(-500)
            print('我滚了!')
        except:
            print('完蛋啦')

你可能感兴趣的:(python,GUI控制,笔记,python,开发语言)