Управление мышью в Python чаще всего используется для автоматизации рутинных задач, тестирования, создания скриптов для игр или автоматизации взаимодействия с графическим интерфейсом пользователя (GUI).
В стандартной библиотеке Python нет встроенных модулей для прямого управления мышью, поскольку это низкоуровневые операции, зависящие от операционной системы. Поэтому для этих целей используются сторонние библиотеки.
Наиболее популярные и мощные библиотеки для управления мышью (и клавиатурой) в Python:
Pyautogui: Самая популярная и многофункциональная библиотека для автоматизации GUI. Pynput: Предоставляет более низкоуровневый контроль и мониторинг ввода.
Давайте рассмотрим pyautogui как наиболее универсальное решение для большинства задач.
1. Pyautogui (Рекомендуемый для большинства задач)
Pyautogui позволяет перемещать курсор, выполнять клики, перетаскивать, скроллить и т. д.
Установка:
Bash
Pip install pyautogui
Важные функции и примеры использования:
Python
Import pyautogui
Import time
# — Настройки безопасности (рекомендуется) —
# pyauogui. FAILSAFE = True # Включить защиту от зацикливания: переместите мышь в верхний левый угол экрана, чтобы остановить скрипт
# pyautogui. PAUSE = 0.5 # Задержка в 0.5 секунды после каждого вызова функции PyAutoGUI
Print("Начинаем управление мышью…")
# — Получение текущего положения курсора —
X, y = pyautogui. position()
Print(f"Текущая позиция курсора: X={x}, Y={y}")
# — Перемещение курсора —
# Переместить курсор в абсолютную позицию (x=100, y=100) за 1 секунду
Print("\nПеремещаем курсор в (100, 100)…")
Pyautogui. moveTo(100, 100, duration=1)
Time. sleep(1) # Задержка для демонстрации
# Переместить курсор относительно текущей позиции (на 50 пикселей вправо, на 0 пикселей вверх/вниз)
Print("Перемещаем курсор относительно (+50, 0)…")
Pyautogui. move(50, 0, duration=0.5) # или pyautogui. moveRel()
Time. sleep(1)
# — Клики мышью —
# Простой клик (левая кнопка по умолчанию)
Print("\nВыполняем клик (левая кнопка)…")
Pyautogui. click()
Time. sleep(1)
# Клик в определенной позиции
Print("Выполняем клик в (200, 200)…")
Pyautogui. click(x=200, y=200)
Time. sleep(1)
# Двойной клик
Print("Выполняем двойной клик…")
Pyautogui. doubleClick()
Time. sleep(1)
# Клик правой кнопкой
Print("Выполняем клик правой кнопкой…")
Pyautogui. rightClick()
Time. sleep(1)
# Клик средней кнопкой
Print("Выполняем клик средней кнопкой…")
Pyautogui. middleClick()
Time. sleep(1)
# Нажатие и отпускание кнопки мыши (для перетаскивания)
Print("Нажимаем левую кнопку…")
Pyautogui. mouseDown()
Time. sleep(0.5)
Print("Отпускаем левую кнопку…")
Pyautogui. mouseUp()
Time. sleep(1)
# — Перетаскивание (drag and drop) —
# Переместить курсор в начальную точку
Pyautogui. moveTo(300, 300, duration=1)
Print("\nПеретаскиваем объект из (300, 300) в (400, 400)…")
# Перетащить на 100 пикселей вправо и 100 пикселей вниз
Pyautogui. dragRel(100, 100, duration=1) # или pyautogui. dragTo(400, 400, duration=1)
Time. sleep(1)
# — Скроллинг (прокрутка колесика мыши) —
# Прокрутить вверх на 100 единиц
Print("\nПрокручиваем вверх на 100 единиц…")
Pyautogui. scroll(100)
Time. sleep(1)
# Прокрутить вниз на 50 единиц
Print("Прокручиваем вниз на 50 единиц…")
Pyautogui. scroll(-50)
Time. sleep(1)
Print("\nЗавершено управление мышью.")
Важные моменты при использовании Pyautogui:
- Координаты: Координаты (0,0) находятся в верхнем левом углу экрана. Положительные X идут вправо, положительные Y идут вниз. Длительность: Использование параметра duration делает движения мыши более плавными и естественными, что полезно для демонстраций или когда нужно имитировать человеческий ввод. Без duration движения происходят мгновенно. Ошибки и FAILSAFE: Если вы запускаете скрипт pyautogui и он начинает делать что-то не то (например, зацикливается), вы можете быстро переместить курсор мыши в Самый верхний левый угол экрана (координаты 0,0). По умолчанию pyautogui обнаружит это и вызовет pyautogui. FailSafeException, останавливая скрипт. Это спасательная функция. Задержки: Используйте time. sleep() между операциями или установите pyautogui. PAUSE, чтобы дать время операционной системе и приложениям отреагировать на действия мыши.
2. Pynput (Для более низкоуровневого контроля и мониторинга)
Pynput позволяет контролировать и мониторить ввод с клавиатуры и мыши. Это может быть полезно для создания слушателей событий мыши.
Установка:
Bash
Pip install pynput
Пример (перемещение и клик):
Python
From pynput. mouse import Controller, Button
Import time
Mouse = Controller()
Print(f"Текущая позиция курсора: {mouse. position}")
# Перемещаем курсор
Mouse. position = (100, 100)
Print(f"Новая позиция курсора: {mouse. position}")
Time. sleep(1)
# Нажимаем левую кнопку
Mouse. press(Button. left)
Time. sleep(0.1)
# Отпускаем левую кнопку
Mouse. release(Button. left)
Print("Клик выполнен.")
# Прокрутка
# mouse. scroll(0, 2) # Прокрутить вверх на 2 единицы
# Слушатель событий мыши (более сложный пример)
# from pynput import mouse
#
# def on_move(x, y):
# print(‘Мышь перемещена до {0}’.format((x, y)))
#
# def on_click(x, y, button, pressed):
# print(‘{0} в {1} {2}’.format(
# ‘Нажата’ if pressed else ‘Отпущена’,
# (x, y),
# button))
# if not pressed:
# # Остановить слушатель после отпускания кнопки
# return False
#
# def on_scroll(x, y, dx, dy):
# print(‘Прокрутка {0} в {1}’.format(
# ‘вверх’ if dy > 0 else ‘вниз’,
# (x, y)))
# # return False
#
# # Собираем события до тех пор, пока on_click не вернет False
# with mouse. Listener(
# on_move=on_move,
# on_click=on_click,
# on_scroll=on_scroll) as listener:
# listener. join()
Выбор библиотеки:
- Pyautogui: Если ваша основная задача — Автоматизировать действия пользователя (перемещать мышь, кликать, перетаскивать, печатать текст). Это высокоуровневая и простая в использовании библиотека для UI-автоматизации. Pynput: Если вам нужен более Низкоуровневый контроль над вводом или вы хотите Мониторить события мыши/клавиатуры (например, отслеживать движения курсора или клики).
Для большинства задач по автоматизации мыши pyautogui будет более подходящим выбором.