LINUX.ORG.RU

Python скрипт кликающий по экрану

 ,


2

1

Переношу проект с одной версии программы на другую, т.к. импорт невозможен, использую копипаст объектов. Есть рутинная задача по копированию названий объектов, в корне проекта их нет, поэтому копировать название возможно только тыкая по экрану в чём python мне и помог.

Вот такой код

import keyboard
import threading
import time
import pyautogui

#import pyautogui - координаты мышки
#pyautogui.displayMousePosition()

def exit_on_esc():
    while True:
        if keyboard.is_pressed('esc'):
            exit(1)

def main():
    #задержка перед началом работы скрипта
    time.sleep(10)

    #находимся на первом проекте

    #определяем количество повторений
    repetitions = 6

    for i in range(repetitions):
        # нажимаем F2, чтобы выделить название объекта
        pyautogui.moveTo(133, 819) # координаты первого объекта
        pyautogui.click()
        pyautogui.press('down', presses=i)
        pyautogui.press('f2')
        #копируем название в буфер обмена
        pyautogui.hotkey('ctrl', 'c')
    
        #переключаемся на второй проект
        pyautogui.hotkey('alt', 'tab')

        # вводим новое название объекта 
        pyautogui.moveTo(133, 772)
        pyautogui.click()
        pyautogui.press('down', presses=i)
        pyautogui.press('f2')
        pyautogui.hotkey('ctrl', 'v')
        pyautogui.press('enter')

        # переключаемся на первый проект
        pyautogui.hotkey('alt', 'tab')


if __name__ == "__main__":
    # Запуск потока с отлавливанием нажатия ESC
    exit_thread = threading.Thread(target=exit_on_esc)
    exit_thread.start()

    # Запуск основного потока
    main_thread = threading.Thread(target=main)
    main_thread.start()

#скрипт выполнен!

Все хорошо работает, но каждый раз приходиться в ручную забивать координаты сначала одного экрана с первым проектом, затем второго со вторым. Может кто-то помочь чтобы координаты как-то сами определялись после первого нажатия на один объект и затем на второй, а потом чтобы всё запускалось?



Последнее исправление: ilyaGor (всего исправлений: 1)

Ответ на: комментарий от Silerus

Судя по документации на pyautogui, оно умеет нажимать в нужном месте, но не умеет обрабатывать клик в нужном месте. Но, можно заюзать дополнительный модуль для чтения mouse on click, и таких модулей для python доступно несколько. То есть обработать такое событие не проблема, примерно так, как в вашем примере.

lucentcode ★★★★★
()