zoukankan      html  css  js  c++  java
  • pyautogui 文档(一):简介

    PyAutoGUI 可实现控制鼠标、键盘、消息框、截图、定位等功能,最近做了个自动化需要这些,故了解并记录下

    自动化需要操作win7上的一个app,用PyAutoGUI做的,定位坐标,点击鼠标等,但是对于屏幕的大小分辨率有要求,

    不够完善,后利用图片定位一个base坐标,根据base坐标定位其他按钮的位置,才算完成,勉强用,不过学习了行的

    PyAUTOGUI,又进一步。

    资料来源:https://pyautogui.readthedocs.io/en/latest/general.html

    PyAutoGUI适用于Windows / Mac / Linux以及Python 2和3.从PyPI安装pip install pyautogui

    一般功能

    >>> pyautogui.position()  # current mouse x and y
    (968, 56)
    >>> pyautogui.size()  # current screen resolution width and height
    (1920, 1080)
    >>> pyautogui.onScreen(x, y)  # True if x & y are within the screen.
    True

    失败保险

    在每次PyAutoGUI调用后设置2.5秒的暂停:

    >>> import pyautogui
    >>> pyautogui.PAUSE = 2.5

    当故障安全模式是True,将鼠标移动到左上角将引发pyautogui.FailSafeException可以中止程序的:

    >>> import pyautogui
    >>> pyautogui.FAILSAFE = True

    鼠标功能

    XY坐标在屏幕的左上角有0,0原点。X增加向右,Y增加向下。

    >>> pyautogui.moveTo(x, y, duration=num_seconds)  # move mouse to XY coordinates over num_second seconds
    >>> pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)  # move mouse relative to its current position

    如果duration为0或未指定,则立即移动。注意:在Mac上拖动不能立即。

    >>> pyautogui.dragTo(x, y, duration=num_seconds)  # drag mouse to XY
    >>> pyautogui.dragRel(xOffset, yOffset, duration=num_seconds)  # drag mouse relative to its current position

    调用click()只需用鼠标当前位置的左键单击鼠标一次,但关键字参数可以改变:

    >>> pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

    button关键字参数可以是'left''middle''right'

    所有点击都可以完成click(),但这些功能是为了便于阅读而存在。关键字args是可选的:

    >>> pyautogui.rightClick(x=moveToX, y=moveToY)
    >>> pyautogui.middleClick(x=moveToX, y=moveToY)
    >>> pyautogui.doubleClick(x=moveToX, y=moveToY)
    >>> pyautogui.tripleClick(x=moveToX, y=moveToY)

    正向滚动将向上滚动,负向滚动将向下滚动:

    >>> pyautogui.scroll(amount_to_scroll, x=moveToX, y=moveToY)

    可以单独调用单个按钮向下和向上事件:

    >>> pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
    >>> pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

    键盘功能

    按键可以转到键盘光标处于功能调用时的任何位置。

    >>> pyautogui.typewrite('Hello world!
    ', interval=secs_between_keys)  # useful for entering text, newline is Enter

    键名称列表也可以传递:

    >>> pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys)

    密钥名称的完整列表在pyautogui.KEYBOARD_KEYS

    Ctrl-S或Ctrl-Shift-1等键盘热键可以通过将键名列表传递给hotkey()

    >>> pyautogui.hotkey('ctrl', 'c')  # ctrl-c to copy
    >>> pyautogui.hotkey('ctrl', 'v')  # ctrl-v to paste

    可以单独调用单个按钮向下和向上事件:

    >>> pyautogui.keyDown(key_name)
    >>> pyautogui.keyUp(key_name)

    消息框功能

    如果您需要暂停程序直到用户单击“确定”,或者想要向用户显示某些信息,则消息框函数具有与JavaScript类似的名称:

    >>> pyautogui.alert('This displays some text with an OK button.')
    >>> pyautogui.confirm('This displays text and has an OK and Cancel button.')
    'OK'
    >>> pyautogui.prompt('This lets the user type in a string and press OK.')
    'This is what I typed in.'

    如果用户单击“取消”,prompt()函数将返回None

    截图函数

    PyAutoGUI使用Pillow / PIL作为其图像相关数据。

    在Linux上,您必须运行才能使用屏幕截图功能。sudo apt-get install scrot

    >>> pyautogui.screenshot()  # returns a Pillow/PIL Image object
    <PIL.Image.Image image mode=RGB size=1920x1080 at 0x24C3EF0>
    >>> pyautogui.screenshot('foo.png')  # returns a Pillow/PIL Image object, and saves it to a file
    <PIL.Image.Image image mode=RGB size=1920x1080 at 0x31AA198>

    如果您有一个想要点击的图像文件,可以在屏幕上找到它locateOnScreen()

    >>> pyautogui.locateOnScreen('looksLikeThis.png')  # returns (left, top, width, height) of first place it is found
    (863, 417, 70, 13)

    locateAllOnScreen()函数将为屏幕上找到的所有位置返回一个生成器:

    >>> for i in pyautogui.locateAllOnScreen('looksLikeThis.png')
    ...
    ...
    (863, 117, 70, 13)
    (623, 137, 70, 13)
    (853, 577, 70, 13)
    (883, 617, 70, 13)
    (973, 657, 70, 13)
    (933, 877, 70, 13)
    >>> list(pyautogui.locateAllOnScreen('looksLikeThis.png'))
    [(863, 117, 70, 13), (623, 137, 70, 13), (853, 577, 70, 13), (883, 617, 70, 13), (973, 657, 70, 13), (933, 877, 70, 13)]

    locateCenterOnScreen()函数只返回在屏幕上找到图像的中间的XY坐标:

    >>> pyautogui.locateCenterOnScreen('looksLikeThis.png')  # returns center x and y
    (898, 423)

    None如果在屏幕上找不到图像,则会返回这些功能

    注意:定位功能很慢,可能需要一两秒钟。

    position() - 返回整数的元组:(x,y)表示鼠标光标的当前位置。

    size() - 返回整数的元组:(宽度,高度)表示主监视器的大小。TODO - 添加多显示器支持。

  • 相关阅读:
    欧拉函数 || [SDOI2008]仪仗队 || BZOJ 2190 || Luogu P2158
    欧拉函数 || Calculation 2 || HDU 3501
    并查集+时光倒流 || [JSOI2008]星球大战starwar || BZOJ 1015 || Luogu P1197
    并查集+启发式合并+LCA思想 || 冷战 || BZOJ 4668
    并查集+优先队列+启发式合并 || 罗马游戏 || BZOJ 1455 || Luogu p2713
    BZOJ-USACO被虐记
    #1
    BZOJ2441: [中山市选2011]小W的问题
    BZOJ2726: [SDOI2012]任务安排
    BZOJ1492: [NOI2007]货币兑换Cash
  • 原文地址:https://www.cnblogs.com/gexbooks/p/10789317.html
Copyright © 2011-2022 走看看