이전 포스트에 이어 마우스 제어방법에 대해 알아보겠다.
pynput 이란, 키보드와 마우스를 제어할 수 있는 파이썬 라이브러리이다.
이 라이브러리를 통해 키보드와 마우스 입력을 하고, 리스너 등록을 통해 키보드와 마우스로부터 들어오는 값을 가져올 수도 있다.
1. 마우스 제어
하기 예제를 통해 마우스 클릭, 더블클릭, 이동, 드래그를 살펴보자.
from pynput.mouse import Button, Controller
class RemoteMouse:
def __init__(self):
self.mouse = Controller()
def getPosition(self):
return self.mouse.position
def setPos(self, xPos, yPos):
self.mouse.position = (xPos, yPos)
def movePos(self, xPos, yPos):
self.mouse.move(xPos, yPos)
def click(self):
self.mouse.click(Button.left)
def doubleClick(self):
self.mouse.click(Button.left, 2)
def clickRight(self):
self.mouse.click(Button.right)
def drag(self, from_x, from_y, to_x, to_y, is_absolute=True):
if is_absolute is True:
self.mouse.position = (from_x, from_y)
else:
self.mouse.position = self.getPosition()
self.click()
self.mouse.move(from_x, from_y)
self.click()
self.mouse.press(Button.left)
if is_absolute is True:
self.mouse.position = (to_x, to_y)
else:
self.mouse.move(to_x, to_y)
self.mouse.release(Button.left)
if __name__ == '__main__':
mouse = RemoteMouse()
print('X: %s, Y:%s' %mouse.getPosition())
mouse.setPos(200, 200)
mouse.movePos(400, 400)
mouse.click()
mouse.doubleClick()
mouse.drag(200, 200, 400, 400)
2. 마우스 리스너
마우스의 위치값, 클릭여부, 스크롤에 대해 리스너를 통해 받아올 수 있다.
from pynput import mouse
def on_move(x,y):
print('Position : x:%s, y:%s' %(x,y))
def on_click(x, y, button, pressed):
print('Button: %s, Position: (%s, %s), Pressed: %s ' %(button, x, y, pressed))
def on_scroll(x, y, dx, dy):
print('Scroll: (%s, %s) (%s, %s).' %(x, y, dx, dy))
with mouse.Listener(
on_move=on_move,
on_click=on_click,
on_scroll=on_scroll) as listener:
listener.join()
'개발 > Python' 카테고리의 다른 글
[파이썬] pynput을 이용한 키보드 제어 (0) | 2020.07.28 |
---|---|
[파이썬] 한글 바이트 변환 방법 (0) | 2020.07.27 |
[파이썬] 시리얼통신 (pyserial) (7) | 2020.07.26 |
[파이썬] 랜덤모듈 (random module) (0) | 2020.07.25 |
[파이썬] datetime으로 날짜, 시간 다루기 (0) | 2020.07.23 |