본문 바로가기
카테고리 없음

[파이썬] python pyautogui, 고정된 두 지점을 이동하는 마우스포인터 구현

디지털노마드 2023. 1. 31.
반응형

 

요건 이전글인 thread 를 사용하기 이전에 구현했던 코드.

모니터의 가장 왼쪽 위 구석을 (0, 0) 이라고 했을때, (100, 100) 지점과 180도 대칭이 되는 지점

(넓이길이 - 100, 높이길이 - 100) 지점을 마우스가 왔다갔다 하도록 구현했다. 

 

import pyautogui

pyautogui.FAILSAFE = False

def position_scr_out() -> bool:

    cur_x, cur_y = pyautogui.position()

    if cur_x < 0 or cur_x > scr_width or cur_y < 0 or cur_y > scr_height:

        print("program stopped: ", end = " ")
        print("cur_x is " + str(cur_x), end = " ")
        print("cur_y is " + str(cur_y))
        return True

    return False


scr_width, scr_height = pyautogui.size()
print("main monitor size is : " + str(scr_width) + " * " + str(scr_height))

while True:

    pyautogui.moveTo(0 + 100, 0 + 100)

    if position_scr_out():
        break

    pyautogui.sleep(2)

    pyautogui.moveTo(scr_width - 100, scr_height - 100)

    if position_scr_out():
        break

    pyautogui.sleep(2)

 

마우스가 이동하는 중에 사이사이 position_scr_out 함수를 불러서

마우스가 화면 밖으로 나가면 프로그램을 종료 하도록 했다.

(모니터를 여러대 쓸때, 다른 모니터로 넘어가면 화면 밖으러 나간것으로 처리함)

 

그리고 pyautogui.FAILSAFE = False 를 하면

모니터가 1대일때, 가장 가장자리로 포인터를 이동하면 프로그램이 종료 되는 것을 막을 수 있다. 

default 는 True 이고 혹시모를 프로그램 탈출을 위해서 추천하지 않는다고 한다. 

반응형

댓글