[python] PyQt를 활용한 스크린샷 도구 개발

이번 포스트에서는 PyQt를 사용하여 스크린샷 도구를 개발하는 방법에 대해 알아보겠습니다. PyQt는 파이썬으로 GUI 애플리케이션을 개발하기 위한 도구로 많이 사용되며, 스크린샷 기능을 추가할 수 있습니다.

1. PyQt 설치

먼저 PyQt를 설치해야 합니다. pip를 사용하여 아래 명령어를 실행합니다.

pip install pyqt5

2. PyQt로 스크린샷 도구 생성하기

스크린샷을 찍는 도구를 만들기 위해 PyQt의 기능을 활용해보겠습니다. PyQt에서는 QApplication, QLabel, QPixmap, QScreen 등의 클래스를 사용할 수 있습니다.

import sys
from PyQt5.QtWidgets import QApplication, QLabel
from PyQt5.QtGui import QPixmap, QPainter, QScreen
from PyQt5.QtCore import Qt

app = QApplication(sys.argv)
screen = app.primaryScreen()
screenshot = screen.grabWindow(0)

pixmap = QPixmap(screenshot)
label = QLabel()
label.setPixmap(pixmap.scaled(label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))
label.show()

sys.exit(app.exec_())

위의 코드는 현재 화면의 스크린샷을 찍어 라벨에 표시하는 기능을 갖고 있습니다. 먼저 QApplication을 생성한 후, primaryScreen() 메서드로 현재 화면을 가져옵니다. 가져온 화면을 grabWindow() 메서드로 스크린샷으로 변환하고, QPixmap 객체로 만듭니다. 라벨에 스크린샷을 표시하기 위해 QLabel을 생성하고, setPixmap() 메서드로 화면 이미지를 설정합니다. pixmap.scaled() 메서드를 사용하여 라벨의 크기에 맞게 이미지를 조정합니다. 마지막으로 show() 메서드를 호출하여 스크린샷을 보여줍니다.

3. 실행

위의 코드를 실행하면 스크린샷 도구가 실행되며, 현재 화면의 스크린샷이 보여집니다. 원하는 위치에서 마우스를 클릭하여 스크린샷을 찍을 수 있습니다.

4. 추가 기능

만들어진 스크린샷 도구에 추가적인 기능을 구현할 수 있습니다. 예를 들어, 스크린샷을 저장할 수 있는 기능을 추가할 수 있습니다. QFileDialog 클래스를 사용하여 저장 경로를 선택할 수 있고, QPixmap.save() 메서드를 사용하여 스크린샷을 저장할 수 있습니다.

from PyQt5.QtWidgets import QFileDialog

# ...

save_path, _ = QFileDialog.getSaveFileName(label, "Save Screenshot", "", "PNG Files (*.png)")
if save_path:
    pixmap.save(save_path, 'PNG')

위의 코드는 라벨 클릭 시 스크린샷을 저장할 경로를 선택하는 창을 띄우고, 선택한 경로에 스크린샷을 PNG 파일로 저장합니다.

마치며

이번 포스트에서는 PyQt를 사용하여 스크린샷 도구를 개발하는 방법에 대해 알아보았습니다. PyQt의 다양한 기능을 활용하여 스크린샷 도구에 추가 기능을 구현할 수 있으니 참고하시기 바랍니다.