1.  走对路

    在开始GUI之前,你应该知道如何避免可能发生的问题。可以通过以下方式来防止或恢复GUI自动化问题。

1)  通过注销关闭所有程序

        停止失去控制的 GUI 自动化程序,最简单的方法可能是注销,这将关闭所有运行的程序。Windows上,注销的热键是:Ctrl+Alt+Delete。通过注销,你会丢失所有未保存的工作。

2)  暂停和自动防故障装置

    使用pyautogui.PAUSE设置脚本在每次函数调用后暂停一会儿。让你有很短的时间窗口来控制鼠标和键盘。pyautogui 也有自动防故障功能。将鼠标移到屏幕的左上角,这将导致 pyautogui产生 pyautogui .FailSafeException 异常。示例:

>>> import pyautogui

>>> pyautogui.PAUSE = 1

>>> pyautogui.FAILSAFE = True

2.  控制鼠标移动

        pyautogui 的鼠标函数使用 x、y 坐标。原点的 x、y 都是零,在屏幕的左上角。向右 x 坐标增加,向下 y 坐标增加。所有坐标都是正整数,没有负数坐标。

        pyautogui.size()函数返回两个整数的元组,包含屏幕的宽和高的像素数。示例:

>>>import pyautogui

>>>pyautogui.size()

(1920, 1080)

>>>width, height = pyautogui.size()

1)  移动鼠标

        pyautogui.moveTo(x,y,duration)函数将鼠标立即移动到屏幕的指定位置。x、y 坐标的整数值分别构成了函数的第一个和第二个参数。可选的 duration 整数或浮点数关键字参数,指定了将鼠标移到目的位置所需的秒数。如果不指定,默认值是零,表示立即移动(在 PyAutoGUI 函数中,所有的 duration 关键字参数都是可选的)。示例:

>>> importpyautogui

>>> fori in range(10):

pyautogui.moveTo(100,100, duration=0.25)

pyautogui.moveTo(200,100, duration=0.25)

pyautogui.moveTo(200,200, duration=0.25)

pyautogui.moveTo(100,200, duration=0.25)

        pyautogui.moveRel()函数相对于当前的位置移动鼠标。pyautogui.moveRel() 也接受 3 个参数:向右水平移动多少个像素,向下垂直移动多少个像素,以及(可选的)花多少时间完成移动。为第一第二个参数提供负整数,鼠标将向左或向上移动。示例:

>>>import pyautogui

>>> fori in range(10):

pyautogui.moveRel(100,0, duration=0.25)

pyautogui.moveRel(0,100, duration=0.25)

pyautogui.moveRel(-100,0, duration=0.25)

pyautogui.moveRel(0,-100, duration=0.25)

2)  获取鼠标位置

        pyautogui.position()函数,可以确定鼠标当前的位置。它将返回函数调用时,鼠标 x、y坐标的元组。示例:

>>>pyautogui.position()

(764, 240)

3.  控制鼠标交互

1)  点击鼠标

        pyautogui.click()可以想计算机发送虚拟的鼠标点击。默认情况下,点击将使用鼠标左键,点击发生在鼠标当前所在位置。

如果希望点击在鼠标当前位置以外的地方发生,可以传入 x、y 坐标作为可选的第一第二参数。如果想指定鼠标按键,就加入 button 关键字参数,值分别为 'left'、'middle'或 'right'。示例:

>>>import pyautogui

>>>pyautogui.click(10, 5)

    实现点击也可以调用pyautogui.mouseDown(),这只是按下鼠标按键,再调用 pyautogui.mouseUp(),这只是释放鼠标按键。为 了 进 一 步 方 便 ,pyautogui.doubleClick() 函 数 只 执 行 双 击 鼠 标 左 键 。pyautogui.rightClick()和pyautogui.middleClick() 函数将分别执行双击右键和双击中键。

2)  拖动鼠标

    “拖动”意味着移动鼠标,同时按住一个按键不放。例如,可以通过拖动文件图标,在文件夹之间移动文件,或在日历应用中移动预约。

        PyAutoGUI 提供了 pyautogui.dragTo() 和 pyautogui.dragRel() 函数,将鼠标拖动到一个新的位置,或相对当前位置的位置。dragTo() 和 dragRel() 的参数与moveTo() 和 moveRel() 相同:x 坐标/水平移动,y 坐标/垂直移动,以及可选的时间间隔,示例:

import pyautogui

import time

 

time.sleep(5)

# click to putdrawing program in focus

pyautogui.click()

distance = 200

while distance> 0:

    # move right

    pyautogui.dragRel(distance, 0,duration=0.2)

    distance = distance - 5

    # move down

    pyautogui.dragRel(0, distance,duration=0.2)

    # move left

    pyautogui.dragRel(-distance, 0,duration=0.2)

    # move up

    distance = distance - 5

    pyautogui.dragRel(0, -distance,duration=0.2)

运行结果:

python 关闭网页tab python关闭gui窗口代码_元组

3)  滚动鼠标

        pyautogui.scroll()用于控制鼠标滚动。向它提供一个整型参数,说明向上或向下滚动多少单位。单位的意义在每个操作系统和应用上不一样。滚动发生在鼠标的当前位置。传递正整数表示向上滚动,传递负整数表示向下滚动。示例:

>>>pyautogui.scroll(200)

4.  处理屏幕

1)  获取屏幕快照

        要在 Python 中获取屏幕快照,就调用 pyautogui.screenshot() 函数获得一个Image对象。示例:

>>> import pyautogui

>>> im = pyautogui.screenshot()

Image对象的用法和其他Image对象一致。

2)  分析屏幕快照

        如果屏幕上指定的 x、y 坐标处的像素与指定的颜色匹配,PyAutoGUI 的pixelMatchesColor() 函数将返回 True。第一和第二个参数是整数,对应 x 和 y 坐标。第三个参数是一个元组,包含 3 个整数,是屏幕像素必须匹配的 RGB 颜色。

>>>import pyautogui

>>> im= pyautogui.screenshot()

>>>im.getpixel((50, 200))

(130, 135, 144)

>>>pyautogui.pixelMatchesColor(50, 200, (130, 135, 144))

True

>>>pyautogui.pixelMatchesColor(50, 200, (255, 135, 144))

False