Я хочу удалить библиотеку PyAuto gui из моего кода и использовать библиотеку Pynput - PullRequest
0 голосов
/ 26 апреля 2020

Я работаю над проектом, который выполняет работу по управлению курсором, фактически управляя функциональностью мыши (перемещение курсора, прокрутка вверх, прокрутка вниз, щелчок правой кнопкой мыши, щелчок левой кнопкой мыши). Я использовал PyAuto Gui для выполнения вышеуказанных действий, но теперь хочу отказаться от его использования и использовать вместо него библиотеку pynput. Я публикую часть кода, которая отвечает за действия.

def performAction(yp, rc, bc, action, drag, perform):
    if perform:
        cursor[0] = 4*(yp[0]-110)
        cursor[1] = 4*(yp[1]-120)
        if action == 'move':
            if yp[0] > 110 and yp[0] < 590 and yp[1] > 120 and yp[1] < 390:
                pyautogui.moveTo(cursor[0], cursor[1])
            elif yp[0] < 110 and yp[1] > 120 and yp[1] < 390:
                pyautogui.moveTo(8, cursor[1])
            elif yp[0] > 590 and yp[1] > 120 and yp[1] < 390:
                pyautogui.moveTo(1912, cursor[1])
            elif yp[0] > 110 and yp[0] < 590 and yp[1] < 120:
                pyautogui.moveTo(cursor[0], 8)
            elif yp[0] > 110 and yp[0] < 590 and yp[1] > 390:
                pyautogui.moveTo(cursor[0], 1072)
            elif yp[0] < 110 and yp[1] < 120:
                pyautogui.moveTo(8, 8)
            elif yp[0] < 110 and yp[1] > 390:
                pyautogui.moveTo(8, 1072)
            elif yp[0] > 590 and yp[1] > 390:
                pyautogui.moveTo(1912, 1072)
            else:
                pyautogui.moveTo(1912, 8)
        elif action == 'left':
            pyautogui.click(button='left')
        elif action == 'right':
            pyautogui.click(button='right')
            time.sleep(0.3)
        elif action == 'up':
            pyautogui.scroll(5)
#           time.sleep(0.3)
        elif action == 'down':
            pyautogui.scroll(-5)                           
#           time.sleep(0.3)
        elif action == 'drag' and drag == 'true':
            global y_pos
            drag = 'false'
            pyautogui.mouseDown()
            while(1):
                k = cv2.waitKey(10) & 0xFF
                changeStatus(k)
                _, frameinv = cap.read()
                # flip horizontaly to get mirror image in camera
                frame = cv2.flip(frameinv, 1)
                hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
                b_mask = makeMask(hsv, blue_range)
                r_mask = makeMask(hsv, red_range)
                y_mask = makeMask(hsv, yellow_range)
                py_pos = y_pos
                b_cen = drawCentroid(frame, b_area, b_mask, showCentroid)
                r_cen = drawCentroid(frame, r_area, r_mask, showCentroid)
                y_cen = drawCentroid(frame, y_area, y_mask, showCentroid)
                if py_pos[0] != -1 and y_cen[0] != -1:
                    y_pos = setCursorPos(y_cen, py_pos)
                performAction(y_pos, r_cen, b_cen, 'move', drag, perform)
                cv2.imshow('Frame', frame)
                if distance(y_pos, r_cen) > 60 or distance(y_pos, b_cen) > 60 or distance(r_cen, b_cen) > 60:
                    break

            pyautogui.mouseUp()

Было бы очень полезно, если бы я мог найти способ удалить функциональность библиотеки PyAuto Gui и зависеть исключительно от библиотеки Pynput. Пожалуйста, помогите мне с необходимыми изменениями в коде. \

Заранее спасибо!

...