개요
PySide6를 활용하여 "폴더 선택" 및 "파일 선택" 기능을 구현하는 방법에 대해 기록해보려고 한다.
QFileDialog 주요 메소드 및 예제
폴더 선택 (QFileDialog.getExistingDirectory)
PySide6에서 폴더 및 파일 선택 기능을 구현하려면 QFileDialog
클래스를 사용한다.
폴더 선택의 경우 QFileDialog.getExistingDirectory
메소드를 사용하면 폴더를 선택할 수 있는 대화상자를 제공한다.
예제 코드
아래는 PySide6를 사용하여 폴더 선택 기능을 구현한 간단한 예제이다.
from PySide6.QtWidgets import QApplication, QFileDialog, QVBoxLayout, QPushButton, QWidget, QLabel
class FolderSelector(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("폴더 선택 예제")
self.setGeometry(100, 100, 400, 200)
# 레이아웃 설정
layout = QVBoxLayout()
# 라벨 생성
self.label = QLabel("선택한 폴더 경로가 여기에 표시됩니다.")
layout.addWidget(self.label)
# 버튼 생성
self.button = QPushButton("폴더 선택")
self.button.clicked.connect(self.select_folder)
layout.addWidget(self.button)
# 메인 레이아웃 설정
self.setLayout(layout)
def select_folder(self):
# 폴더 선택 대화상자 열기
folder_path = QFileDialog.getExistingDirectory(self, "폴더 선택", "")
if folder_path:
self.label.setText(f"선택한 폴더: {folder_path}")
else:
self.label.setText("폴더를 선택하지 않았습니다.")
if __name__ == "__main__":
app = QApplication([])
window = FolderSelector()
window.show()
app.exec()
파일 선택 (QFileDialog.getOpenFileName)
파일 선택의 경우 QFileDialog.getOpenFileName
메소드를 사용하면 파일을 선택할 수 있는 대화상자를 제공한다.
예제 코드
PySide6에서 버튼 클릭 시 파일 선택 창을 띄우고,
사용자가 파일을 선택하면 전체 경로(파일 경로 + 파일 이름)를 출력하거나 표시하고 싶다면,
아래와 같이 QFileDialog.getOpenFileName()
을 사용하면 된다.
from PySide6.QtWidgets import (
QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QLabel
)
import sys
class FileSelector(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("파일 선택 예제")
self.resize(400, 200)
# UI 구성 요소
self.layout = QVBoxLayout(self)
self.button = QPushButton("파일 선택")
self.label = QLabel("선택된 파일 경로가 여기에 표시됩니다.")
# 버튼 클릭 시 파일 선택 함수 연결
self.button.clicked.connect(self.select_file)
# 레이아웃에 추가
self.layout.addWidget(self.button)
self.layout.addWidget(self.label)
def select_file(self):
file_path, _ = QFileDialog.getOpenFileName(self, "파일 선택", "", "모든 파일 (*.*)")
if file_path:
self.label.setText(f"선택한 파일: {file_path}")
print("선택한 파일 경로:", file_path)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = FileSelector()
window.show()
sys.exit(app.exec())
또한, QFileDialog.getOpenFileName()
의 세 번째 인자인 파일 필터 를 설정해주면,
원하는 확장자만 선택할 수 있게 필터링이 가능하다!
예를 들어 다음과 같이 다양한 확장자 필터를 사용해볼 수 있다.
file_path, _ = QFileDialog.getOpenFileName(
self,
"파일 선택",
"",
"이미지 파일 (*.png *.jpg *.jpeg);;텍스트 파일 (*.txt);;모든 파일 (*.*)"
)
- "이미지 파일 (
*.png
*.jpg
*.jpeg
);;텍스트 파일 (*.txt
);;모든 파일 (*.*
)"- →
;;
으로 여러 필터를 구분합니다.
- →
- 다이얼로그에서 드롭다운 메뉴로 필터를 선택할 수 있게 됩니다.