Python: уроки, справочник и задачи

Python PyAutoGUI: автоматизация работы с графическим интерфейсом

Раздел: Модули и библиотеки Python · Обновлено 31.10.2026

PyAutoGUI позволяет программе двигать курсор, кликать, печатать и искать элементы на экране по картинке. Это самый простой способ автоматизировать рутину в приложениях, у которых нет API: заполнение однотипных форм, выгрузку отчетов, повторяющиеся клики.

Вы узнаете основные возможности и методы библиотеки, а в новом разделе разберем то, на чем спотыкаются почти все: почему write() не печатает русские буквы, как остановить вышедший из-под контроля скрипт, что делать, если картинка не находится, и как масштаб экрана Windows сбивает координаты. Примеры проверены для Python 3.12 и 3.13.

Python PyAutoGUI: автоматизация работы с графическим интерфейсом
Фото: Bill Bertram / CC BY-SA 2.5, Wikimedia Commons
Содержание статьи
  1. 1. Что такое PyAutoGUI
  2. 2. Для чего нужен PyAutoGUI
  3. 3. Возможности PyAutoGUI
  4. 4. Методы PyAutoGUI
  5. 5. Примеры использования PyAutoGUI
    1. Задача 1. Пример - Hello, PyAutoGUI
    2. Задача 2. Пример - Управление браузером с помощью pyautogui
    3. Задача 3. Пример - Рисуем в Paint с помощью pyautogui
    4. Задача 4. Пример - Управление буфером обмена с помощью pyautogui
    5. Задача 5. Пример - Отправка сообщений в телеграм с помощью pyautogui
  6. Заключение
  7. Как писать надежные скрипты на PyAutoGUI
    1. Аварийная остановка и пауза
    2. Ввод русского текста
    3. Поиск элемента по картинке
    4. Типичные проблемы
  8. Частые вопросы
    1. Как остановить скрипт PyAutoGUI, если он вышел из-под контроля?
    2. Почему write() не печатает русские буквы?
    3. Работает ли PyAutoGUI в фоновом режиме или при заблокированном экране?
    4. Как узнать координаты нужной кнопки?

1. Что такое PyAutoGUI

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

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

2. Для чего нужен PyAutoGUI

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

В целом, PyAutoGUI является мощным инструментом для автоматизации работы с графическим интерфейсом, который может значительно упростить выполнение различных задач и повысить эффективность пользовательского опыта.

3. Возможности PyAutoGUI

PyAutoGUI предлагает широкий спектр возможностей для управления мышью, клавиатурой и другими элементами графического интерфейса пользователя (GUI). Некоторые из основных возможностей PyAutoGUI включают:

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

4. Методы PyAutoGUI

PyAutoGUI предлагает разнообразные методы для управления взаимодействием с экраном компьютера. Ниже приведены некоторые из основных методов PyAutoGUI:

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

5. Примеры использования PyAutoGUI

PyAutoGUI может быть применен во множестве сценариев для автоматизации различных задач на компьютере. Ниже приведен пример использования PyAutoGUI для создания скрипта, который открывает текстовый редактор и печатает сообщение "Hello, PyAutoGUI!":

Задача 1. Пример - Hello, PyAutoGUI

import pyautogui
import time
# Открываем текстовый редактор (Notepad)
pyautogui.hotkey('win', 'r')  # открываем "Выполнить"
pyautogui.typewrite('notepad')  # печатаем "notepad"
pyautogui.press('enter')  # нажимаем Enter
time.sleep(1)  # ждем 1 секунду
pyautogui.typewrite('Hello, PyAutoGUI!')  # печатаем сообщение
# Сохраняем и закрываем файл
pyautogui.hotkey('ctrl', 's')  # сохраняем файл
time.sleep(1)
pyautogui.typewrite('example.txt')  # название файла
pyautogui.press('enter')  # нажимаем Enter
time.sleep(1)
pyautogui.hotkey('ctrl', 'w')  # закрываем файл
# Это всего лишь один из множества возможных сценариев применения PyAutoGUI. Благодаря его функциональности, можно создавать скрипты автоматизации для различных задач, управлять приложениями, выполнять действия на основе визуальных данных и многое другое.

Задача 2. Пример - Управление браузером с помощью pyautogui

import pyautogui
import time
# Открываем браузер (Google Chrome)
pyautogui.hotkey('win', 'r')  # открываем "Выполнить"
pyautogui.typewrite('chrome')
pyautogui.press('enter')
time.sleep(2)  # ждем, пока браузер загрузится
# Переходим на сайт Google
pyautogui.typewrite('https://www.google.com')
pyautogui.press('enter')
time.sleep(2)
# Вводим запрос в поисковую строку и нажимаем Enter
query = "PyAutoGUI examples"
pyautogui.click(400, 200)  # кликаем в поле поиска
pyautogui.typewrite(query)
pyautogui.press('enter')
time.sleep(2)
# Это еще один пример использования PyAutoGUI, который демонстрирует возможность автоматизации действий в браузере. Благодаря PyAutoGUI можно создавать скрипты для выполнения различных действий в веб-интерфейсах, что упрощает работы с веб-приложениями и сервисами.

Этот пример показывает, как PyAutoGUI может использоваться для контроля за браузером, взаимодействия с веб-сайтами и выполнения поисковых запросов автоматически. При необходимости такие скрипты могут быть адаптированы под конкретные задачи и потребности пользователя.

Задача 3. Пример - Рисуем в Paint с помощью pyautogui

import pyautogui
import time
# Открываем графическое приложение Paint
pyautogui.hotkey('win', 'r')  # открываем "Выполнить"
pyautogui.typewrite('mspaint')  # запускаем Paint
pyautogui.press('enter')
time.sleep(2)  # ждем, пока Paint загрузится
# Рисуем простую фигуру (например, квадрат)
pyautogui.moveTo(300, 300)  # перемещаем курсор в начальное положение
pyautogui.dragTo(400, 400, duration=1)  # рисуем квадрат
# Сохраняем изображение
pyautogui.hotkey('ctrl', 's')  # вызываем окно сохранения
time.sleep(1)
pyautogui.typewrite('square.png')  # указываем имя файла
pyautogui.press('enter')  # сохраняем файл
# Этот пример демонстрирует возможность использования PyAutoGUI для управления графическими приложениями и выполнения действий на основе координат на экране. PyAutoGUI позволяет автоматизировать процессы рисования, редактирования и сохранения изображений.

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

Задача 4. Пример - Управление буфером обмена с помощью pyautogui

import pyautogui
import time
# Открываем текстовый документ и копируем текст
pyautogui.hotkey('win', 'r')  # открываем "Выполнить"
pyautogui.typewrite('notepad')  # запускаем Notepad
pyautogui.press('enter')
time.sleep(1)
pyautogui.typewrite('Пример текста для копирования.')  # пишем текст
pyautogui.hotkey('ctrl', 'a')  # выделяем весь текст
pyautogui.hotkey('ctrl', 'c')  # копируем текст
# Открываем браузер и вставляем скопированный текст
pyautogui.hotkey('win', 'r')  # открываем "Выполнить"
pyautogui.typewrite('chrome')  # запускаем Chrome
pyautogui.press('enter')
time.sleep(2)
pyautogui.typewrite('https://www.google.com')  # переходим на Google
pyautogui.press('enter')
time.sleep(2)
pyautogui.click(400, 200)  # кликаем в поле поиска
pyautogui.hotkey('ctrl', 'v')  # вставляем скопированный текст
# Этот пример демонстрирует возможность использования PyAutoGUI для копирования и вставки текста между различными приложениями. PyAutoGUI позволяет автоматизировать действия, связанные с обменом информацией между приложениями и окружением рабочего стола.

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

Задача 5. Пример - Отправка сообщений в телеграм с помощью pyautogui

import pyautogui
import time
# Открываем приложение Telegram
pyautogui.hotkey('win', 'r')  # открываем "Выполнить"
pyautogui.typewrite('telegram')  # запускаем Telegram
pyautogui.press('enter')
time.sleep(5)  # ждем, пока Telegram загрузится
# Находим контакт и отправляем сообщение
search_x, search_y = 300, 100
message_x, message_y = 400, 200
contact_name = "Имя_контакта"
message_text = "Привет, это автоматическое сообщение!"
pyautogui.click(search_x, search_y)  # кликаем в поле поиска
pyautogui.typewrite(contact_name)  # вводим имя контакта
time.sleep(2)
pyautogui.press('enter')  # выбираем контакт
time.sleep(2)
pyautogui.click(message_x, message_y)  # кликаем в поле ввода сообщения
pyautogui.typewrite(message_text)  # пишем сообщение
pyautogui.press('enter')  # отправляем сообщение
# Этот пример демонстрирует возможность использования PyAutoGUI для автоматизации отправки сообщений через мессенджеры. PyAutoGUI позволяет управлять интерфейсом приложений, взаимодействовать с элементами пользовательского интерфейса и выполнять различные действия на основе координат экрана.

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

Заключение

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

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

Как писать надежные скрипты на PyAutoGUI

В этом разделе: аварийная остановка и пауза, ввод русского текста, поиск элемента по картинке, типичные проблемы.

Аварийная остановка и пауза

Скрипт, который кликает не туда, может натворить бед быстрее, чем вы успеете его закрыть. В PyAutoGUI по умолчанию включен режим FAILSAFE: резко уведите мышь в любой угол экрана, и следующая команда выбросит pyautogui.FailSafeException. Не отключайте его. Параметр PAUSE задает задержку после каждой команды и дает интерфейсу время отреагировать.

import pyautogui

pyautogui.FAILSAFE = True   # значение по умолчанию, оставьте его
pyautogui.PAUSE = 0.3       # 0.3 секунды после каждого действия

print(pyautogui.size())      # разрешение экрана, например Size(width=1920, height=1080)
print(pyautogui.position())  # текущие координаты курсора

Ввод русского текста

Функции write() и ее старое имя typewrite() эмулируют нажатия клавиш и знают только латинскую раскладку. Кириллицу они пропускают. Надежный способ - положить текст в буфер обмена и вставить его сочетанием клавиш:

import pyautogui
import pyperclip   # pip install pyperclip

def paste_text(text: str) -> None:
    pyperclip.copy(text)
    pyautogui.hotkey("ctrl", "v")   # на macOS: "command", "v"

paste_text("Отчет за октябрь готов")

Поиск элемента по картинке

try:
    point = pyautogui.locateCenterOnScreen(
        "button_ok.png", confidence=0.9, grayscale=True
    )
    pyautogui.click(point)
except pyautogui.ImageNotFoundException:
    print("Кнопка не найдена на экране")

locateOnScreen() возвращает прямоугольник Box(left, top, width, height), а locateCenterOnScreen() сразу точку центра. В актуальных версиях при неудаче выбрасывается ImageNotFoundException, в старых возвращался None, поэтому проверка if point is None в новых версиях не сработает. Параметр confidence требует установленного пакета opencv-python.

Шаблон кнопки вырезайте из скриншота того же экрана, на котором будет работать скрипт, и делайте его небольшим: надпись и часть рамки без фона вокруг. Ограничьте область поиска параметром region=(x, y, ширина, высота), это ускоряет поиск в несколько раз и снижает риск найти похожий элемент в другом месте. Перед кликом по только что открытому окну добавьте ожидание: цикл с несколькими попытками поиска надежнее одной фиксированной паузы.

Типичные проблемы

СимптомПричинаРешение
Клик смещен относительно кнопкимасштаб экрана Windows 125 или 150 процентовделайте шаблоны скриншотом на той же машине, проверяйте pyautogui.size()
Картинка не находитсядругая тема, масштаб, сглаживаниевырезайте небольшой уникальный фрагмент, используйте confidence
Скрипт не работает на серверенет графического сеансаPyAutoGUI нужен реальный рабочий стол; на Linux требуется X11
Нажатия уходят не в то окноокно не в фокусекликните по окну перед вводом или добавьте паузу

Частые вопросы

Ответы на типичные вопросы читателей, которые помогут избежать частых ошибок.

Как остановить скрипт PyAutoGUI, если он вышел из-под контроля?

Резко переместите мышь в любой угол экрана: при включенном FAILSAFE следующая команда прервет программу исключением. Если скрипт запущен из терминала, также помогает Ctrl+C в окне терминала.

Почему write() не печатает русские буквы?

Функция нажимает клавиши по их названиям и поддерживает только символы, для которых есть клавиша в английской раскладке. Для кириллицы и эмодзи копируйте текст в буфер через pyperclip и вставляйте его через hotkey("ctrl", "v").

Работает ли PyAutoGUI в фоновом режиме или при заблокированном экране?

Нет. Библиотека эмулирует реальные действия пользователя, поэтому нужен активный рабочий стол с открытым окном. Для фоновой автоматизации сайтов используйте Selenium или Playwright, а для приложений Windows библиотеку pywinauto.

Как узнать координаты нужной кнопки?

Вызовите в терминале pyautogui.displayMousePosition(), она выводит координаты курсора в реальном времени, или выполните в цикле print(pyautogui.position()) и наведите курсор на элемент. Надежнее не хранить координаты, а находить кнопку по картинке через locateCenterOnScreen().