<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Для закрепления материала из уроков к ним идёт множество упражнений.

Дополнительно к курсу идёт вспомогательная система, которая не даст Вам забросить начатое на полпути.

Также вместе с курсов Вы получаете Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Управляем курсором мыши в Python

Управляем курсором мыши в Python

Одним из инструментов автоматизации задач на компьютере являются программы, которые напрямую управляют клавиатурой и мышью. Эти программы могут управлять другими приложениями, посылая им виртуальные нажатия клавиш и щелчки мыши, просто - как если бы вы сидели за своим компьютером и сами взаимодействовали с приложениями. Этот метод известен как автоматизация графического интерфейса пользователя.

Автоматизация графического интерфейса пользователя чем то напоминает программирование манипулятора. Мы можем запрограммировать роботизированную руку так, чтобы она печатала на клавиатуре и перемещала мышь за нас. Этот метод особенно полезен для задач, связанных с бессмысленным щелчком или заполнением форм. Для подобных действий нужен отдельный программный модуль.

Таким модулем в Python является PyAutoGUI.

Установим его командой:


# для windows
pip install pyautogui

В зависимости от того, какую операционную систему вы используете, вам может потребоваться установить некоторые другие модули (так называемые зависимости), прежде чем мы сможем установить PyAutoGUI.

В Windows следующие действия пропускаем.

В OS X запустите sudo pip3 install pyobjc-framework-Quartz, sudo pip3 install pyobjc-core, а затем sudo pip3 install pyobjc.

В Linux запустите sudo pip3 install python3-xlib, sudo apt-get install scrot, sudo apt-get install python3-tk и sudo apt-get install python3-dev. (Scrot - это программа для создания снимков экрана, которую использует PyAutoGUI.)

После установки этих зависимостей запустите pip install pyautogui (или pip3 в OS X и Linux), чтобы установить PyAutoGUI.

Чтобы проверить, правильно ли установлен PyAutoGUI, запустим import pyautogui из интерактивной оболочки и проверим наличие сообщений об ошибках.

Прежде чем перейти к автоматизации с графическим интерфейсом, мы должны знать, как избежать проблем, которые могут возникнуть. Python может перемещать нашу мышь и печатать нажатия клавиш с невероятной скоростью, что может доставить некоторые проблемы. Кроме того, если что-то пойдет не так, но наша программа продолжит перемещать указатель мыши, и будет сложно сказать, что именно делает программа или как исправить проблему.

Мы можем заставить сценарий ждать после каждого вызова функции, что даст время для управления мышью и клавиатурой, если что-то пойдет не так. Для этого установим переменную pyautogui.PAUSE на количество секунд, на которое мы хотим, чтобы она приостанавливалась.Например, после установки pyautogui.PAUSE = 1.5 каждый вызов функцииPyAutoGUI будет ждать полторы секунды после выполнения своего действия. Инструкции, не относящиеся к PyAutoGUI, не будут иметь этой паузы.

PyAutoGUI также имеет отказоустойчивую функцию. Перемещение курсора мыши в верхний левый угол экрана приведет к тому, что PyAutoGUI вызовет исключение pyautogui.FailSafeException. Ваша программа может либо обработать это исключение с помощью операторов try и except, либо позволить исключению привести к сбою вашей программы. В любом случае функция отказоустойчивости остановит программу, если вы быстро переместите мышь как можно дальше вверх и влево. Мы можем отключить эту функцию, установив pyautogui.FAILSAFE = False. Введите в интерактивную оболочку следующее:


>>> import pyautogui
# поместите выполняемый код из следующих примеров
>>> pyautogui.PAUSE = 1
>>> pyautogui.FAILSAFE = True

Управление движением мыши

Прежде чем вы узнаете, как перемещать мышь и отслеживать ее положение на экране с помощью PyAutoGUI, давайте сначала разберемся, как PyAutoGUI работает с координатами.

Функции мыши PyAutoGUI используют координаты x и y. Начало координат, где x и y равны нулю, находится в верхнем левом углу экрана. Координаты x увеличиваются при движении вправо, а координаты y увеличиваются при движении вниз. Все координаты - целые положительные числа; отрицательных координат нету.

Разрешение - это высота и ширина экрана в пикселях. Если разрешение вашего экрана установлено на 1366 / 768, то координата для левого верхнего угла будет (0, 0), а координата для правого нижнего угла будет (1366, 768).

Функция pyautogui.size() возвращает кортеж из двух целых чисел ширины и высоты экрана в пикселях. Введем в интерактивную оболочку следующее:


>>> import pyautogui
>>> pyautogui.size()

#вывод    
Size(width=1366, height=768)

#pyautogui.size() возвращает (1366, 768) на компьютере с разрешением 1366 / 768; в зависимости от разрешения вашего экрана возвращаемое значение может отличаться. Вы можете сохранить ширину и высоту из pyautogui.size() в переменных, таких как ширина и высота, для лучшей читаемости в ваших программах.


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

#вывод 
(1366, 768)

Перемещение мыши

Теперь, когда мы разобрались с координатами экрана, давайте переместим мышь. Функция pyautogui.moveTo() мгновенно переместит курсор мыши в указанную позицию на экране. Целочисленные значения координат x и y составляют первый и второй аргументы функции соответственно. Необязательный аргумент целочисленного значения длительности или ключевого слова с плавающей запятой указывает количество секунд, необходимое для перемещения мыши к месту назначения. Если вы его не укажете, по умолчанию будет 0 для мгновенного движения. Все аргументы ключевого слова duration в функциях PyAutoGUI являются необязательными. Введем в интерактивную оболочку следующее:


>>> import pyautogui
>>> for i 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)
      

#В этом примере курсор мыши перемещается по часовой стрелке в виде квадрата между четырьмя координатами, указанными в общей сложности десять раз. Каждое движение занимает четверть секунды, как указано в аргументе ключевого слова duration = 0.25. Если бы вы не передали третий аргумент ни одному из вызовов pyautogui.moveTo(), курсор мыши мгновенно телепортировался бы от точки к точке.

Функция pyautogui.moveRel() перемещает курсор мыши относительно его текущей позиции.В следующем примере мышь перемещается по тому же квадратному шаблону, за исключением того, что он начинает квадрат с того места, где мышь оказывается на экране, когда запускается код:


>>> import pyautogui
>>> for i 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)

      
# pyautogui.moveRel() также принимает три аргумента: сколько пикселей нужно переместить по горизонтали вправо, сколько пикселей переместить вертикально вниз и (необязательно) сколько времени потребуется для завершения перемещения. Отрицательное целоечисло для первого или второго аргумента приведет к перемещению мыши влево или вверх соответственно.

Получение координат мыши

Также мы можем определить текущее положение мыши, вызвав функцию pyautogui.position(), которая вернет кортеж позиций курсора мыши по x и y во время вызова функции. Введите в интерактивную оболочку следующее, перемещая мышь после каждого вызова:


>>> pyautogui.position()

# вывод
Point(x=182, y=495)

>>> pyautogui.position()

# вывод
Point(x=1365, y=767)

>>> pyautogui.position()

# вывод
Point(x=1338, y=767)

Таким образом мы научились программно управлять передвижением курсора мыши, получать координаты его положения на экране, а также использовали функцию прерывания программы.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.