안녕하세요, 오늘은 간단한 파이썬 메모장 프로그램을 만들어보겠습니다. 이 강좌에서는 PyQt를 사용하여 GUI 어플리케이션을 구축하고, 파일 입출력을 통해 메모를 저장하고 불러오는 방법에 대해 다룰 것입니다. 이를 통해 여러분은 파이썬의 기본적인 GUI 프로그래밍과 파일 처리에 대한 이해를 높일 수 있을 것입니다.
1. 파이썬 GUI 프로그래밍
GUI는 Graphical User Interface의 약자로, 사용자가 쉽게 프로그램을 사용할 수 있도록 하는 그래픽 기반의 인터페이스입니다. PyQt는 파이썬에서 가장 널리 사용되는 GUI 툴킷 중 하나로, 강력하고 다양한 위젯을 제공합니다. 이번 강좌에서는 PyQt5를 사용하여 간단한 메모장을 만들 것입니다.
2. 필요한 도구 설치
먼저 PyQt5를 설치해야 합니다. 다음 명령어를 실행하여 PyQt5를 설치합니다:
pip install PyQt5
3. 프로젝트 구조 설정
프로젝트의 기본 구조를 설정하겠습니다. 프로젝트 폴더를 생성하고, 파이썬 스크립트를 위한 파일을 생성합니다:
mkdir python-notepad
cd python-notepad
touch notepad.py
이제 본격적으로 코드를 작성해 보겠습니다.
4. PyQt5로 GUI 생성하기
PyQt5를 사용할 때는 QWidget 또는 그 상속 클래스의 인스턴스를 사용하여 창을 만들어야 합니다. 기본적인 메모장 인터페이스를 만들기 위해 필요한 요소는 다음과 같습니다:
- 텍스트 입력을 위한 QTextEdit 위젯
- 파일을 열고 저장할 수 있는 기능
- 편리한 메뉴바
4.1. 기본 코드 작성하기
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QTextEdit, QFileDialog, QMessageBox
from PyQt5.QtGui import QIcon
class Notepad(QMainWindow):
def __init__(self):
super().__init__()
# QTextEdit 위젯을 생성합니다
self.textEdit = QTextEdit(self)
self.setCentralWidget(self.textEdit)
# 메모장의 초기 세팅을 합니다
self.initUI()
def initUI(self):
# 메뉴바 생성
menubar = self.menuBar()
# 파일 메뉴 생성
fileMenu = menubar.addMenu('파일')
# 열기 액션 추가
openFile = QAction(QIcon('open.png'), '열기', self)
openFile.setShortcut('Ctrl+O')
openFile.setStatusTip('파일 열기')
openFile.triggered.connect(self.showDialog)
fileMenu.addAction(openFile)
# 저장 액션 추가
saveFile = QAction(QIcon('save.png'), '저장', self)
saveFile.setShortcut('Ctrl+S')
saveFile.setStatusTip('파일 저장')
saveFile.triggered.connect(self.saveFile)
fileMenu.addAction(saveFile)
# 종료 액션 추가
exitAction = QAction('종료', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('응용 프로그램 종료')
exitAction.triggered.connect(self.close)
fileMenu.addAction(exitAction)
# 상태바 활성화
self.statusBar()
# 메인 윈도우 설정
self.setGeometry(300, 300, 600, 400)
self.setWindowTitle('메모장')
self.show()
def showDialog(self):
fname, _ = QFileDialog.getOpenFileName(self, '파일 열기', '/', "Text files (*.txt)")
if fname:
with open(fname, 'r', encoding='utf-8') as f:
self.textEdit.setText(f.read())
def saveFile(self):
fname, _ = QFileDialog.getSaveFileName(self, '파일 저장', '/', "Text files (*.txt)")
if fname:
with open(fname, 'w', encoding='utf-8') as f:
f.write(self.textEdit.toPlainText())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Notepad()
sys.exit(app.exec_())
5. 코드 분석
위 코드는 매우 기본적인 PyQt5 응용 프로그램입니다. 이 코드를 통해 여러분은 파일을 열고, 편집하며, 저장할 수 있는 간단한 메모장 기능을 구현할 수 있습니다. 각 부분은 다음과 같이 구성되어 있습니다:
5.1. Notepad 클래스
Notepad 클래스는 QMainWindow 클래스를 상속하며, PyQt 응용 프로그램에서 윈도우의 주요 기능을 담당합니다. 여기서는 QTextEdit 위젯을 중앙에 배치한 후, 메뉴바를 통해 파일을 열고 저장할 수 있는 기능을 추가했습니다.
5.2. initUI 메서드
메모리의 초기 UI 설정을 담당하며 메뉴바와 상태바를 생성하고, 열기, 저장, 종료와 같은 액션을 메뉴에 추가합니다. 각 액션은 사용자 상호작용에 대해 특정 메서드를 호출하도록 설정되어 있습니다.
5.3. showDialog와 saveFile 메서드
showDialog 메서드는 파일 열기 대화창을 통해 사용자가 선택한 파일을 읽어들여 QTextEdit에 표시합니다. saveFile 메서드는 파일 저장 대화창을 통해 사용자가 지정한 경로에 현재 QTextEdit에 입력된 텍스트를 저장합니다.
6. 마무리
기본적인 파이썬 메모장을 PyQt5를 사용하여 제작하였습니다. 이 프로그램은 파일을 열고 편집하여 저장할 수 있는 간단한 기능을 구현합니다. 이를 통해 PyQt5의 기본적인 사용법과 함께 파이썬을 활용한 GUI 애플리케이션 개발 방법을 익혔습니다. 이 기초적인 메모장 예제를 통해 여러분은 더 복잡하고 다양한 기능을 갖춘 애플리케이션을 제작할 수 있을 것입니다. 꼭 다양한 실습을 통해 능력을 향상시키세요!
감사합니다!