모듈 3-A⏱️ 예상 소요 시간: 40분📊 난이도: 중급
모듈 3-A: Python 기반 데스크톱 어플리케이션 개발 & 빌드
PyQt6 / CustomTkinter를 활용한 윈도우 GUI 앱 개발 및 .exe 파일 빌드
🎯 학습 목표 및 개요
Python 언어와 PyQt6/CustomTkinter GUI 라이브러리를 활용하여 윈도우 데스크톱용 프로그램(이미지 포맷 변환기 또는 스마트 메모장)을 제작하고 독립 실행파일(.exe)로 빌드합니다.
✅ Python GUI 코드 생성 -> 파이썬 실행 환경 테스트 -> PyInstaller를 통한 .exe 생성 및 실행 검증
1
PyQt6 이미지 변환기 GUI 코드 프롬프트 작성
드래그 앤 드롭과 이미지 포맷 변환 기능이 있는 윈도우 앱 제작 지시서입니다.
클로드_입력_프롬프트.txttext
| 1 | 당신은 Python GUI 소프트웨어 엔지니어입니다. PyQt6를 활용하여 "배치 이미지 포맷 변환기(PNG/JPG/WEBP)" 윈도우 데스크톱 앱을 만들어주세요. |
| 2 | |
| 3 | [필수 기능] |
| 4 | 1. 이미지 파일 여러 개 선택 버튼 및 리스트박스 |
| 5 | 2. 변환할 목표 포맷 선택 (PNG, JPG, WEBP, GIF) |
| 6 | 3. 변환 시작 버튼 및 변환 진행률(ProgressBar) 표시 |
| 7 | 4. 변환 완료 시 저장 폴더 자동 열기 기능 (os.startfile) |
| 8 | 5. 현대적이고 깔끔한 파스텔톤 다크 테마 QSS 스타일시트 적용 |
| 9 | |
| 10 | 단일 파일 (app.py)로 실행 가능하도록 작성해 주세요. |
복사 버튼을 누른 후 claude.ai 입력창에 그대로 붙여넣으세요.
app.pypython
| 1 | import sys, os |
| 2 | from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, |
| 3 | QPushButton, QFileDialog, QComboBox, QProgressBar, QLabel, QListWidget) |
| 4 | from PIL import Image |
| 5 | |
| 6 | class ImageConverterApp(QMainWindow): |
| 7 | def __init__(self): |
| 8 | super().__init__() |
| 9 | self.setWindowTitle("클로드 AI - 이미지 포맷 변환기") |
| 10 | self.setGeometry(100, 100, 500, 400) |
| 11 | self.files = [] |
| 12 | self.initUI() |
| 13 | |
| 14 | def initUI(self): |
| 15 | central_widget = QWidget() |
| 16 | self.setCentralWidget(central_widget) |
| 17 | layout = QVBoxLayout() |
| 18 | |
| 19 | self.label = QLabel("변환할 이미지 파일을 선택하세요") |
| 20 | layout.addWidget(self.label) |
| 21 | |
| 22 | self.btn_select = QPushButton("파일 선택") |
| 23 | self.btn_select.clicked.connect(self.select_files) |
| 24 | layout.addWidget(self.btn_select) |
| 25 | |
| 26 | self.list_widget = QListWidget() |
| 27 | layout.addWidget(self.list_widget) |
| 28 | |
| 29 | self.combo = QComboBox() |
| 30 | self.combo.addItems(["PNG", "JPEG", "WEBP"]) |
| 31 | layout.addWidget(self.combo) |
| 32 | |
| 33 | self.progress = QProgressBar() |
| 34 | layout.addWidget(self.progress) |
| 35 | |
| 36 | self.btn_convert = QPushButton("변환 시작") |
| 37 | self.btn_convert.clicked.connect(self.convert_images) |
| 38 | layout.addWidget(self.btn_convert) |
| 39 | |
| 40 | central_widget.setLayout(layout) |
| 41 | |
| 42 | def select_files(self): |
| 43 | files, _ = QFileDialog.getOpenFileNames(self, "이미지 선택", "", "Images (*.png *.jpg *.jpeg *.webp)") |
| 44 | if files: |
| 45 | self.files = files |
| 46 | self.list_widget.clear() |
| 47 | self.list_widget.addItems([os.path.basename(f) for f in files]) |
| 48 | |
| 49 | def convert_images(self): |
| 50 | if not self.files: return |
| 51 | target_fmt = self.combo.currentText().lower() |
| 52 | out_dir = os.path.join(os.path.expanduser("~"), "Desktop", "Converted_Images") |
| 53 | os.makedirs(out_dir, exist_ok=True) |
| 54 | |
| 55 | for i, file_path in enumerate(self.files): |
| 56 | img = Image.open(file_path) |
| 57 | base_name = os.path.splitext(os.path.basename(file_path))[0] |
| 58 | save_path = os.path.join(out_dir, f"{base_name}.{target_fmt}") |
| 59 | if target_fmt == "jpeg": img = img.convert("RGB") |
| 60 | img.save(save_path) |
| 61 | self.progress.setValue(int(((i + 1) / len(self.files)) * 100)) |
| 62 | |
| 63 | os.startfile(out_dir) |
| 64 | |
| 65 | if __name__ == '__main__': |
| 66 | app = QApplication(sys.argv) |
| 67 | ex = ImageConverterApp() |
| 68 | ex.show() |
| 69 | sys.exit(app.exec()) |
Python PyQt6와 Pillow 라이브러리를 활용한 변환기 풀 코드
📸 실습 스크린샷 가이드라인
16:9윈도우 OS상에서 창으로 열린 이미지 포맷 변환기 GUI 화면
[이미지 영역: 1920x1080 (16:9)]
🎯 스크린샷 필수 포함 요소:
윈도우 상단 타이틀바파일 선택 리스트프로그래스바 및 변환 버튼
2
PyInstaller를 통한 .exe 파일 패키징 및 실행 파일 빌드
파이썬이 설치되지 않은 다른 컴퓨터에서도 작동할 수 있도록 단일 .exe 실행파일로 포장합니다.
클로드_입력_프롬프트.txttext
| 1 | pip install pyinstaller PyQt6 Pillow |
| 2 | pyinstaller --noconsole --onefile app.py |
복사 버튼을 누른 후 claude.ai 입력창에 그대로 붙여넣으세요.
💡 .exe 파일 생성 위치
PyInstaller 명령어를 실행하면 프로젝트 폴더 안의 `dist` 폴더 내부에 `app.exe` 단일 실행 파일이 생깁니다.
📸 실습 스크린샷 가이드라인
16:9터미널에서 빌드 완료 로그 및 윈도우 탐색기의 dist/app.exe 파일 모습
[이미지 영역: 1920x1080 (16:9)]
🎯 스크린샷 필수 포함 요소:
터미널 Successful 빌드 문구탐색기 dist 폴더 경로app.exe 실행 파일 아이콘
🧠 모듈 이해도 점검 퀴즈 (Knowledge Check)
이번 모듈에서 학습한 핵심 개념을 잘 이해했는지 테스트해보세요.