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

Определяем текущее положение курсора мыши с Python

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

Для этого нам нужно во первых отобразить текущие координаты мыши, во вторых обновить их в соответствии с перемещением курсора по экрану. На уровне кода мы должны вызвать функцию position(), для получения текущих координат, затем при перемещении курсора стереть предыдущие координаты используя символ \b и обработать исключение KeyboardInterrupt так чтобы сочетание клавиш CTRL-C вызвало выход.

Откроем текстовый редактор и создадим файл с именем Mouse_now.py. Поместим в него наш код:


# На первом этапе импортируем модули  pyautogui, time. Также напечатаем напоминание пользователю, о возможности выхода из программы нажав CTRL-C
import pyautogui
import time
print("Press CTRL-C to quit")

'''
Для постоянного вывода текущих координат из mouse.position() можно использовать бесконечный цикл. А для кода завершающего программу нужно будет перехватить исключение KeyboardInterrupt, которое возникает всякий раз, когда пользователь нажимает CTRL-C.
Если этого не сделать то try/exept отобразит уродливую строку сообщения об ошибке.
И чтобы обработать цикл заключим его в  оператор try '''

try:
    while True:
      # получение текущих координат
      x, y = pyautogui.position() 
      # метод str(x) превращает число в строку а rjust(4) сдвигает его на четыре позиции вправо
      positionStr = 'X:'+ str(x).rjust(4) +'  Y:'+ str(y).rjust(4) 
      # end предотвращает добавление символа новой строки,  без  этого старые координаты удалить не получится
      print(positionStr, end = '')
      
      # escape-символ \ b стирает конец строки и чтобы удалить всю строку умножаем его на длину строки
      print('\b'*len(positionStr), end = '', flush = True)
      
      # для предотвращения мигания при выполнении цикла используем засыпание 
      time.sleep(0.01)



# Когда пользователь нажимает CTRL-C, выполнение программы переходит к разделу except и # Done будет напечатан с новой строки

except KeyboardInterrupt:
    print('\nDone') 

Когда программа запустится, будут напечатаны только две строки. Они должны выглядеть примерно так:


# вывод
Press Ctrl-C to quit
X: 165  Y: 144

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