본문 바로가기
Python

파이썬 PyAutoGui 마우스 좌표 위치 확인 방법 (Python)

by 무적물리 2020. 2. 7.

파이썬(Python)의 많은 패키지 중에 매크로를 만들 수 있는 패키지로 'pyautogui'가 있습니다. 이 패키지를 사용하기 위해서는 이미지 형태의 파일로 좌표를 찾거나 좌표를 직접 입력이 필요합니다. 왜냐하면 매크로의 목적은 보통 무언가를 클릭하고, 드래그하기 때문입니다. 


이번 포스팅에서는 'pyautogui' 패키지에 좌표를 직접 입력해서 매크로를 동작시킬 수 있도록 마우스가 위치한 곳의 좌표를 반환하는 Python Script를 작성해보겠습니다.




마우스 위치 출력

기본적으로 마우스 좌표를 반환하는 코드는 아래와 같습니다. 이를 활용해서 while문을 돌리고 좌표를 받아오는 것이니 먼저 확인하는 것이 좋겠습니다. 아래 코드를 그대로 가져다가 붙여 넣고 실행하면 됩니다.


import pyautogui


# 마우스 좌표 출력

print( "Current Mouse Position : ", pyautogui.position() )


위 코드에서 파이썬 'pyautogui' 패키지를 사용하기 위해서 제일 첫줄에 'import pyautogui' 선언을 해주었습니다. 이어서 좌표를 문자열로 출력하기 위해서 'print'문을 사용했고, 'pyautogui.position()'으로 마우스의 좌표를 가져와서 출력합니다. 해당 코드를 실행하면 아래의 검정 배경의 박스와 같이 결과가 x, y 좌표로 출력됩니다.


Current Mouse Position :  Point(x=2159, y=350)




연속 마우스 위치 출력

while문을 사용해서 위와 같은 기본 코드를 돌리면 연속해서 마우스 위치를 출력할 수 있습니다. 이때는 사용자가 원하는 시간을 간격으로 마우스 좌표를 출력해보겠습니다. 역시, 아래 코드를 그대로 붙여넣고 실행하면 됩니다.


import pyautogui

import time


# 오류시 마우스를 좌상단으로 보내기

pyautogui.PAUSE = 1

pyautogui.FAILSAFE True


# 마우스 위치 출력

while True:

print( "Current Mouse Position : ", pyautogui.position() )

time.sleep( 1 )


코드에 대해 설명하겠습니다. 추가된 'time' 패키지는 마우스 위치를 기록할 시간의 간격을 위해서 사용했습니다. '오류시 마우스를 좌상단으로 보내기'의 아래 두줄은 혹시 모를 사고에 대비해 마우스를 모니터 좌상단에서 격렬하게 왔다 갔다하면 코드가 종료됩니다. 생각보다 위험한 상황이 많아서 꼭 포함해줘야합니다. while문은 True를 받으면 무한대로 돌게되는 코드이고요, 1초에 한번씩 마우스 위치를 출력하도록 'time.sleep(1)' 코드를 삽입했습니다.


위와 같은 코드를 작성하고 실행한 이후에 마우스를 이리저리 움직여보면 아래 검정 박스와 같이 1초에 한번씩 마우스 좌표가 출력됩니다.


Current Mouse Position :  Point(x=2238, y=874)

Current Mouse Position :  Point(x=2494, y=1104)

Current Mouse Position :  Point(x=1948, y=1005)

Current Mouse Position :  Point(x=14, y=297)

Current Mouse Position :  Point(x=34, y=278)

Current Mouse Position :  Point(x=1338, y=475)

Current Mouse Position :  Point(x=1658, y=418)

Current Mouse Position :  Point(x=1717, y=1105)

Current Mouse Position :  Point(x=537, y=977)

Current Mouse Position :  Point(x=96, y=1037)


마무리

위와 같은 코드를 활용하여 마우스 위치를 반환받을 수 있습니다. 마우스 위치를 활용해서 다양한 매크로로 활용이 가능한데, 아래 포스팅에서 확인해보시면 되겠습니다. 가장 위 포스팅이 위와 같은 방법으로 마우스 클릭 위치를 확인해서 무한으로 마우스를 클릭하는 매크로입니다.


댓글