PyQt5를 사용하여 간단한 화면 캡처 프로그램을 만들어보겠습니다. 이 프로그램은 사용자가 지정한 영역을 캡처하여 이미지를 저장할 수 있도록 합니다. PyQt5는 Python을 사용하여 GUI 애플리케이션을 만들기 위한 강력한 도구입니다. 시작해보겠습니다!
코드 작성
먼저 screen_capture.py 파일을 만들고, 아래 코드를 작성합니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog
from PyQt5.QtGui import QScreen, QPixmap
class ScreenCapture(QWidget):
def __init__(self):
super().__init__()
self.initUI() # 사용자 인터페이스 초기화
def initUI(self):
self.setWindowTitle('Screen Capture') # 창 제목 설정
self.layout = QVBoxLayout() # 세로 레이아웃 생성
self.captureBtn = QPushButton('Capture Screen', self) # 캡처 버튼 생성
self.captureBtn.clicked.connect(self.captureScreen) # 버튼 클릭 시 captureScreen 메소드 연결
self.layout.addWidget(self.captureBtn) # 버튼을 레이아웃에 추가
self.setLayout(self.layout) # 레이아웃 설정
self.show() # 창 표시
def captureScreen(self):
# 현재 화면을 캡처
screen = QApplication.primaryScreen()
screenshot = screen.grabWindow(0)
# 파일 저장 다이얼로그를 열어 캡처한 이미지를 저장할 경로를 선택
savePath, _ = QFileDialog.getSaveFileName(self, "Save Image", "", "PNG Files (*.png);;All Files (*)")
if savePath:
# 선택한 경로에 캡처한 이미지를 저장
screenshot.save(savePath, 'png')
if __name__ == '__main__':
app = QApplication(sys.argv) # 애플리케이션 객체 생성
ex = ScreenCapture() # ScreenCapture 객체 생성
sys.exit(app.exec_()) # 애플리케이션 이벤트 루프 실행
코드 설명
필요한 모듈 가져오기: sys, QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QScreen, QPixmap 모듈을 가져옵니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog
from PyQt5.QtGui import QScreen, QPixmap
ScreenCapture 클래스 정의: QWidget을 상속하여 화면 캡처 프로그램의 메인 윈도우를 정의합니다.
class ScreenCapture(QWidget):
def __init__(self):
super().__init__()
self.initUI() # 사용자 인터페이스 초기화
initUI 메소드: 사용자 인터페이스를 초기화합니다. 캡처 버튼을 생성하고 레이아웃에 추가합니다.
def initUI(self):
self.setWindowTitle('Screen Capture') # 창 제목 설정
self.layout = QVBoxLayout() # 세로 레이아웃 생성
self.captureBtn = QPushButton('Capture Screen', self) # 캡처 버튼 생성
self.captureBtn.clicked.connect(self.captureScreen) # 버튼 클릭 시 captureScreen 메소드 연결
self.layout.addWidget(self.captureBtn) # 버튼을 레이아웃에 추가
self.setLayout(self.layout) # 레이아웃 설정
self.show() # 창 표시
captureScreen 메소드: 화면을 캡처하여 사용자가 지정한 경로에 이미지를 저장합니다.
def captureScreen(self):
# 현재 화면을 캡처
screen = QApplication.primaryScreen()
screenshot = screen.grabWindow(0)
# 파일 저장 다이얼로그를 열어 캡처한 이미지를 저장할 경로를 선택
savePath, _ = QFileDialog.getSaveFileName(self, "Save Image", "", "PNG Files (*.png);;All Files (*)")
if savePath:
# 선택한 경로에 캡처한 이미지를 저장
screenshot.save(savePath, 'png')
메인 실행 코드: QApplication 객체를 생성하고 ScreenCapture 객체를 실행합니다.
if __name__ == '__main__':
app = QApplication(sys.argv) # 애플리케이션 객체 생성
ex = ScreenCapture() # ScreenCapture 객체 생성
sys.exit(app.exec_()) # 애플리케이션 이벤트 루프 실행
실행
코드를 작성한 후, 터미널이나 커맨드 프롬프트에서 다음 명령어를 실행하여 프로그램을 실행합니다.
python screen_capture.py
'Capture Screen' 버튼을 클릭하면 화면이 캡처되고, 파일 저장 다이얼로그가 나타나며 캡처한 이미지를 저장할 수 있습니다.
결론
이제 PyQt5를 사용하여 간단한 화면 캡처 프로그램을 만들 수 있게 되었습니다. 이 프로그램은 매우 기본적이지만, 이를 바탕으로 다양한 기능을 추가하여 더욱 강력한 화면 캡처 프로그램을 만들 수 있습니다. 예를 들어, 특정 영역을 선택하여 캡처하거나, 캡처한 이미지를 편집하는 기능을 추가할 수 있습니다.
도움이 되셨길 바랍니다! 질문이나 의견이 있으시면 댓글로 남겨주세요. 감사합니다!
'프로그래밍 > python' 카테고리의 다른 글
PyQt5로 간단한 그림판 프로그램 만들기 (2) | 2024.06.16 |
---|---|
PyQt5로 구글 번역기 프로그램 만들기 (0) | 2024.06.12 |
PyQt5 시그널과 슬롯: GUI 이벤트 처리의 핵심 (0) | 2024.06.11 |
PyQt5 QMessageBox 상세한 사용법 (0) | 2024.06.09 |
PyQt5 QFileDialog 상세한 사용법 (0) | 2024.06.09 |