728x90
반응형
QFileDialog는 PyQt5에서 파일 또는 디렉터리를 선택하는 대화 상자를 제공하는 클래스입니다. 파일 열기와 저장을 간단히 구현할 수 있어 응용 프로그램 개발에 자주 사용됩니다. 이번 포스팅에서는 QFileDialog의 기본 사용법과 주요 메서드를 설명하고, 간단한 예제 코드를 통해 이를 활용하는 방법을 소개합니다.
예제 코드: 파일 열기와 저장 구현하기
아래 코드는 QFileDialog를 사용해 파일을 열고 저장하는 기능을 구현한 예제입니다.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction, QFileDialog
class MyApp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 중앙에 텍스트 편집기 추가
self.textEdit = QTextEdit(self)
self.setCentralWidget(self.textEdit)
# 파일 열기 액션
openFile = QAction('Open', self)
openFile.setShortcut('Ctrl+O') # 단축키 설정
openFile.setStatusTip('Open a file') # 상태 표시줄 설명
openFile.triggered.connect(self.showOpenDialog) # 클릭 시 연결될 메서드 설정
# 파일 저장 액션
saveFile = QAction('Save', self)
saveFile.setShortcut('Ctrl+S')
saveFile.setStatusTip('Save a file')
saveFile.triggered.connect(self.showSaveDialog)
# 메뉴바 생성 및 추가
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File') # 메뉴 이름 지정
fileMenu.addAction(openFile) # 메뉴에 'Open' 추가
fileMenu.addAction(saveFile) # 메뉴에 'Save' 추가
# 윈도우 설정
self.setWindowTitle('QFileDialog Example') # 창 제목 설정
self.setGeometry(300, 300, 400, 300) # 창 위치와 크기 설정
self.show()
def showOpenDialog(self):
"""파일 열기 대화 상자"""
# 파일 열기 대화 상자 호출
filePath, _ = QFileDialog.getOpenFileName(
self, 'Open File', '', 'Text Files (*.txt);;All Files (*)'
)
if filePath: # 사용자가 파일을 선택한 경우
with open(filePath, 'r', encoding='utf-8') as file:
self.textEdit.setText(file.read()) # 파일 내용을 텍스트 편집기에 로드
def showSaveDialog(self):
"""파일 저장 대화 상자"""
# 파일 저장 대화 상자 호출
filePath, _ = QFileDialog.getSaveFileName(
self, 'Save File', '', 'Text Files (*.txt);;All Files (*)'
)
if filePath: # 사용자가 저장 위치를 지정한 경우
with open(filePath, 'w', encoding='utf-8') as file:
file.write(self.textEdit.toPlainText()) # 텍스트 편집기의 내용을 저장
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
코드 설명
1. 메인 윈도우 및 텍스트 편집기 구성
- QMainWindow: PyQt5에서 기본적으로 제공하는 윈도우 위젯으로, 메뉴 바와 상태 표시줄 등을 포함할 수 있습니다.
- QTextEdit: 다중 줄 텍스트 입력 및 출력 위젯. 중앙에 배치하여 사용자가 텍스트를 입력하거나 파일 내용을 표시합니다.
2. 파일 열기와 저장 액션
- QAction: 메뉴나 툴바에서 선택할 수 있는 작업(액션)을 정의합니다.
- setShortcut: 단축키를 지정합니다. 예: Ctrl+O는 파일 열기.
- setStatusTip: 상태 표시줄에 표시할 텍스트를 설정합니다.
- triggered.connect: 액션이 트리거되었을 때 호출할 메서드를 연결합니다.
3. 파일 열기 대화 상자
- QFileDialog.getOpenFileName:
- 사용자가 파일을 선택하면 선택된 파일의 경로를 반환합니다.
- filter 인수를 사용하여 특정 파일 형식만 표시할 수 있습니다. 예: Text Files (*.txt);;All Files (*).
4. 파일 저장 대화 상자
- QFileDialog.getSaveFileName:
- 사용자가 저장 위치와 파일 이름을 선택하면 그 경로를 반환합니다.
- 파일 확장자는 filter를 통해 설정할 수 있습니다.
5. 파일 입출력 처리
- with open(filePath, mode, encoding='utf-8'):
- 파일을 읽거나 쓸 때 사용합니다.
- mode='r': 읽기 모드.
- mode='w': 쓰기 모드.
- encoding='utf-8': UTF-8 인코딩 사용.
728x90
주요 메서드 정리
- QFileDialog.getOpenFileName
- 파일 열기 대화 상자를 호출합니다.
- 반환값: (선택된 파일 경로, 선택된 필터).
- QFileDialog.getSaveFileName
- 파일 저장 대화 상자를 호출합니다.
- 반환값: (선택된 파일 경로, 선택된 필터).
- QAction.setShortcut
- 단축키를 지정합니다.
- 예: Ctrl+O는 파일 열기에 할당.
- QTextEdit
- setText: 텍스트를 설정합니다.
- toPlainText: 입력된 텍스트를 가져옵니다.
실행 결과
- 파일 열기:
- 메뉴에서 File > Open을 선택하거나 Ctrl+O를 누르면 파일 열기 대화 상자가 표시됩니다.
- 선택한 파일의 내용을 텍스트 편집기에 로드합니다.
- 파일 저장:
- 메뉴에서 File > Save를 선택하거나 Ctrl+S를 누르면 파일 저장 대화 상자가 표시됩니다.
- 텍스트 편집기에 입력한 내용을 저장합니다.
결론
이 예제에서는 QFileDialog를 사용해 파일을 열고 저장하는 기본적인 기능을 구현했습니다. QFileDialog는 다양한 옵션을 제공해 더 복잡한 파일 선택 기능도 구현할 수 있습니다. 이 예제를 응용해 텍스트 파일 외에도 다양한 형식의 파일을 처리해 보세요!
728x90
반응형