- Mouse Control FunctionsВ¶
- The Screen and Mouse PositionВ¶
- Mouse MovementВ¶
- Mouse DragsВ¶
- Tween / Easing FunctionsВ¶
- Mouse ClicksВ¶
- The mouseDown() and mouseUp() FunctionsВ¶
- Mouse ScrollingВ¶
- Библиотека PyAutoGUI в Python
- Установка PyAutoGUI в Python
- Windows
- Linux
- Общие функции
- position()
- onScreen()
- Общие операции с мышью
- moveTo()
- moveRel()
- click()
- scroll()
- Общие операции с клавиатурой
- typewrite()
- hotkey()
- screenshot()
- Функции confirm(), alert() и prompt()
Mouse Control FunctionsВ¶
The Screen and Mouse PositionВ¶
Locations on your screen are referred to by X and Y Cartesian coordinates. The X coordinate starts at 0 on the left side and increases going right. Unlike in mathematics, the Y coordinate starts at 0 on the top and increases going down.
The pixel at the top-left corner is at coordinates 0, 0. If your screen’s resolution is 1920 x 1080, the pixel in the lower right corner will be 1919, 1079 (since the coordinates begin at 0, not 1).
The screen resolution size is returned by the size() function as a tuple of two integers. The current X and Y coordinates of the mouse cursor are returned by the position() function.
Here is a short Python 3 program that will constantly print out the position of the mouse cursor:
Here is the Python 2 version:
To check if XY coordinates are on the screen, pass them (either as two integer arguments or a single tuple/list arguments with two integers) to the onScreen() function, which will return True if they are within the screen’s boundaries and False if not. For example:
Mouse MovementВ¶
The moveTo() function will move the mouse cursor to the X and Y integer coordinates you pass it. The None value can be passed for a coordinate to mean “the current mouse cursor position”. For example:
Normally the mouse cursor will instantly move to the new coordinates. If you want the mouse to gradually move to the new location, pass a third argument for the duration (in seconds) the movement should take. For example:
(If the duration is less than pyautogui.MINIMUM_DURATION the movement will be instant. By default, pyautogui.MINIMUM_DURATION is 0.1.)
If you want to move the mouse cursor over a few pixels relative to its current position, use the move() function. This function has similar parameters as moveTo() . For example:
Mouse DragsВ¶
PyAutoGUI’s dragTo() and drag() functions have similar parameters as the moveTo() and move() functions. In addition, they have a button keyword which can be set to ‘left’ , ‘middle’ , and ‘right’ for which mouse button to hold down while dragging. For example:
Tween / Easing FunctionsВ¶
Tweening is an extra feature to make the mouse movements fancy. You can probably skip this section if you don’t care about this.
A tween or easing function dictates the progress of the mouse as it moves to its destination. Normally when moving the mouse over a duration of time, the mouse moves directly towards the destination in a straight line at a constant speed. This is known as a linear tween or linear easing function.
PyAutoGUI has other tweening functions available in the pyautogui module. The pyautogui.easeInQuad function can be passed for the 4th argument to moveTo() , move() , dragTo() , and drag() functions to have the mouse cursor start off moving slowly and then speeding up towards the destination. The total duration is still the same as the argument passed to the function. The pyautogui.easeOutQuad is the reverse: the mouse cursor starts moving fast but slows down as it approaches the destination. The pyautogui.easeOutElastic will overshoot the destination and “rubber band” back and forth until it settles at the destination.
These tweening functions are copied from Al Sweigart’s PyTweening module: https://pypi.python.org/pypi/PyTweening https://github.com/asweigart/pytweening This module does not have to be installed to use the tweening functions.
If you want to create your own tweening function, define a function that takes a single float argument between 0.0 (representing the start of the mouse travelling) and 1.0 (representing the end of the mouse travelling) and returns a float value between 0.0 and 1.0 .
Mouse ClicksВ¶
The click() function simulates a single, left-button mouse click at the mouse’s current position. A “click” is defined as pushing the button down and then releasing it up. For example:
To combine a moveTo() call before the click, pass integers for the x and y keyword argument:
To specify a different mouse button to click, pass ‘left’ , ‘middle’ , or ‘right’ for the button keyword argument:
To do multiple clicks, pass an integer to the clicks keyword argument. Optionally, you can pass a float or integer to the interval keyword argument to specify the amount of pause between the clicks in seconds. For example:
As a convenient shortcut, the doubleClick() function will perform a double click of the left mouse button. It also has the optional x , y , interval , and button keyword arguments. For example:
There is also a tripleClick() function with similar optional keyword arguments.
The rightClick() function has optional x and y keyword arguments.
The mouseDown() and mouseUp() FunctionsВ¶
Mouse clicks and drags are composed of both pressing the mouse button down and releasing it back up. If you want to perform these actions separately, call the mouseDown() and mouseUp() functions. They have the same x , y , and button . For example:
Mouse ScrollingВ¶
The mouse scroll wheel can be simulated by calling the scroll() function and passing an integer number of “clicks” to scroll. The amount of scrolling in a “click” varies between platforms. Optionally, integers can be passed for the the x and y keyword arguments to move the mouse cursor before performing the scroll. For example:
On OS X and Linux platforms, PyAutoGUI can also perform horizontal scrolling by calling the hscroll() function. For example:
The scroll() function is a wrapper for vscroll() , which performs vertical scrolling.
© Copyright 2019, Al Sweigart Revision 24d638dc .
Источник
Библиотека PyAutoGUI в Python
В этом руководстве мы узнаем, как использовать библиотеку pyautogui в Python 3. Она обеспечивает кроссплатформенную поддержку для управления операциями с мышью и клавиатурой с помощью кода, позволяющего автоматизировать задачи. Библиотека pyautogui также доступна для Python 2, однако мы будем использовать Python 3 на протяжении всего этого руководства.
Такой инструмент имеет множество приложений, некоторые из которых включают создание снимков экрана, автоматизацию тестирования графического интерфейса пользователя (например, Selenium), автоматизацию задач, которые можно выполнить только с помощью графического интерфейса, и т.д.
Прежде чем продолжить это руководство, обратите внимание, что есть несколько предварительных условий. Вы должны иметь базовое представление о синтаксисе Python или программировать на каком-либо другом языке, по крайней мере, для начинающих. В остальном учебник довольно прост и понятен новичкам.
Установка PyAutoGUI в Python
Процесс установки PyAutoGUI довольно прост для всех операционных систем. Однако существует несколько зависимостей для Mac и Linux, которые необходимо установить перед установкой и использованием библиотеки PyAutoGUI в программах.
Windows
Для Windows PyAutoGUI не имеет зависимостей. Просто запустите следующую команду в командной строке, и установка будет завершена.
Для Mac сначала необходимо последовательно установить модули pyobjc-core и pyobjc. Ниже приведены команды, которые необходимо последовательно запустить в терминале для успешной установки:
Linux
Для Linux единственная зависимость – это python3-xlib (для Python 3). Чтобы установить его, а затем pyautogui, запустите в своем терминале две указанные ниже команды:
Общие функции
В этом разделе мы собираемся охватить некоторые из наиболее часто используемых функций из библиотеки PyAutoGUI.
position()
Прежде чем мы сможем использовать функции PyAutoGUI, нам нужно импортировать их в нашу программу:
Эта функция position() сообщает нам текущее положение мыши на экране:
onScreen()
Функция onScreen() сообщает нам, существует ли на экране точка с координатами x и y:
Здесь мы видим, что первая точка существует на экране, но вторая точка выходит за пределы.
Функция size() находит высоту и ширину (разрешение) экрана.
Ваш результат может отличаться и будет зависеть от размера вашего экрана.
Общие операции с мышью
В этом разделе мы собираемся охватить функции PyAutoGUI для управления мышью, которые включают в себя как перемещение положения курсора, так и автоматическое нажатие кнопок с помощью кода.
moveTo()
Синтаксис функции moveTo() следующий:
Значение x_coordinate увеличивается слева направо на экране, а значение y_coordinate увеличивается сверху вниз. Значение как x_coordinate, так и y_coordinate в верхнем левом углу экрана равно 0.
Взгляните на следующий скрипт:
В приведенном выше коде основное внимание уделяется функции moveTo(), которая перемещает курсор мыши по экрану на основе координат, которые мы предоставляем в качестве параметров. Первый параметр – это координата x, а второй параметр – координата y. Важно отметить, что эти координаты представляют собой абсолютное положение курсора.
Еще одна вещь, которая была введена в приведенный выше код, – это свойство PAUSE. В основном он приостанавливает выполнение скрипта на заданное время. Свойство PAUSE было добавлено в приведенный выше код, чтобы вы могли видеть выполнение функции. В противном случае функции будут выполняться за доли секунды, и вы не сможете увидеть, как курсор перемещается из одного места в другое на экране.
Другой обходной путь для этого – указать время для каждой операции moveTo() в качестве третьего параметра функции, например moveTo (x, y, time_in_seconds).
Выполнение вышеуказанного скрипта может привести к следующей ошибке:
Если выполнение функции moveTo() вызывает ошибку, аналогичную показанной выше, это означает, что на вашем компьютере включена функция защиты от сбоев. Чтобы отключить отказоустойчивость, добавьте в начало кода следующую строку:
Эта функция включена по умолчанию, поэтому вы можете легко остановить выполнение вашей программы pyautogui, вручную переместив мышь в верхний левый угол экрана. Как только мышь окажется в этом месте, pyautogui выдаст исключение и завершит работу.
moveRel()
Координаты функции moveTo() абсолютны. Однако, если вы хотите переместить положение мыши относительно текущего положения мыши, вы можете использовать функцию moveRel().
Это означает, что точкой отсчета для этой функции при перемещении курсора будет не верхняя левая точка на экране (0, 0), а текущая позиция курсора мыши. Итак, если ваш курсор мыши в настоящее время находится в точке (100, 100) на экране и вы вызываете функцию moveRel() с параметрами (100, 100, 2), новая позиция вашего курсора перемещения будет (200, 200) .
Вы можете использовать функцию moveRel(), как показано ниже:
Приведенный выше скрипт переместит курсор на 100 пунктов вправо и на 100 пунктов вниз за 2 секунды относительно текущей позиции курсора.
click()
Функция click() используется для имитации операций щелчка мышью. Синтаксис функции click() следующий:
Параметры поясняются следующим образом:
- x: координата x точки, которую нужно достичь.
- y: координата y точки, которую нужно достичь.
- clicks: количество кликов, которые вы хотели бы сделать, когда курсор достигнет этой точки на экране.
- interval: количество времени в секундах между каждым щелчком мыши, например, если вы выполняете несколько щелчков мышью.
- button: укажите, какую кнопку мыши вы хотите нажать, когда курсор переместится в эту точку на экране. Возможные значения: правое, левое и среднее.
Вы также можете выполнять определенные функции щелчка следующим образом:
Здесь x и y представляют координаты x и y, как и в предыдущих функциях.
Вы также можете иметь более детальный контроль над щелчками мыши, указав, когда нажимать и отпускать кнопку мыши. Это делается с помощью функций mouseDown и mouseUp соответственно.
Вот небольшой пример:
Приведенный выше код эквивалентен простому вызову pag.click (x, y).
scroll()
Последняя функция мыши, которую мы рассмотрим, – это прокрутка. Как и ожидалось, у него есть два варианта: прокрутка вверх и прокрутка вниз. Синтаксис функции scroll() следующий:
Для прокрутки вверх укажите положительное значение для параметра amount_to_scroll, а для прокрутки вниз укажите отрицательное значение. Вот пример:
Хорошо, это было для функций мыши. К настоящему времени вы должны иметь возможность управлять кнопками мыши, а также перемещениями по коду. Теперь перейдем к функциям клавиатуры. Их много, но мы рассмотрим только наиболее часто используемые.
Общие операции с клавиатурой
Прежде чем мы перейдем к функциям, важно знать, какие клавиши можно нажимать с помощью кода в pyautogui, а также их точное соглашение об именах. Для этого запустите следующий скрипт:
typewrite()
Функция typewrite() используется для ввода чего-либо в текстовое поле. Синтаксис функции следующий:
Здесь текст – это то, что вы хотите ввести в поле, а интервал – это время в секундах между каждым нажатием клавиши. Вот пример:
Выполнение приведенного выше скрипта приведет к вводу текста «Джунаид Халид» в поле, которое в настоящее время выбрано с паузой в 1 секунду между каждым нажатием клавиши.
Другой способ использования этой функции – передача списка клавиш, которые вы хотите нажимать последовательно. Чтобы сделать это с помощью кода, смотрите пример ниже:
В приведенном выше примере будет введен текст junaide с удалением завершающего e. Ввод в текстовое поле будет отправлен нажатием клавиши Enter.
hotkey()
Если вы до сих пор этого не заметили, ключи, которые мы показали выше, не упоминаются для комбинированных операций, таких как Control + C для команды копирования. Если вы думаете, что можете сделать это, передав список [‘ctrl’, ‘c’] функции typewrite(), вы ошибаетесь.
Функция typewrite() будет нажимать обе эти кнопки последовательно, а не одновременно. И, как вы, наверное, уже знаете, чтобы выполнить команду копирования, вам нужно нажать клавишу C, удерживая клавишу ctrl.
Чтобы нажать две или более клавиш одновременно, вы можете использовать функцию hotkey(), как показано здесь:
screenshot()
Если вы хотите сделать снимок экрана в любой момент, функция screenshot() – это именно та функция, которую вы ищете. Давайте посмотрим, как мы можем реализовать это с помощью PyAutoGUI:
Это сохранит объект PIL, содержащий изображение, в переменной.
Однако, если вы хотите сохранить снимок экрана непосредственно на свой компьютер, вы можете вместо этого вызвать функцию снимка экрана следующим образом:
Это сохранит снимок экрана в файле с указанным именем на вашем компьютере.
Функции confirm(), alert() и prompt()
Последний набор функций, который мы рассмотрим в этом руководстве, – это функции окна сообщения. Вот список функций окна сообщений, доступных в PyAutoGUI:
- Окно подтверждения: отображает информацию и дает вам два варианта: ОК и Отмена.
- Окно оповещения: отображает некоторую информацию и подтверждает, что вы ее прочитали. Он отображает одну кнопку, т.е. ОК.
- Поле подсказки: запрашивает некоторую информацию от пользователя, и при входе пользователь должен нажать кнопку ОК.
Теперь, когда мы увидели типы, давайте посмотрим, как мы можем отображать эти кнопки на экране в той же последовательности, что и выше:
На выходе вы увидите следующую последовательность окон сообщений.
После изучения этого руководства вы сможете использовать PyAutoGUI в Python для автоматизации операций с графическим интерфейсом пользователя для повторяющихся задач в вашем собственном приложении.
Источник