QFileDialog.getOpenFileName()은 파일을 선택하는 다이얼로그이므로, 디렉터리만 선택하려면 QFileDialog.getExistingDirectory()를 사용하는 것이 일반적입니다. 하지만 QFileDialog.getOpenFileName()을 사용하면서 디렉터리만 선택하는 방법을 원한다면, 특정 옵션을 조정하여 가능하게 만들 수 있습니다.
방법 1: QFileDialog.getExistingDirectory() 사용 (권장)
from PySide6.QtWidgets import QApplication, QFileDialog
import sys
app = QApplication(sys.argv)
directory = QFileDialog.getExistingDirectory(None, "Select Directory", "")
if directory:
print("Selected directory:", directory)
- 설명: QFileDialog.getExistingDirectory()는 사용자가 폴더만 선택할 수 있도록 합니다.
- 장점: 사용자가 실수로 파일을 선택하는 것을 방지할 수 있음.
방법 2: QFileDialog.getOpenFileName() 사용하여 디렉터리 선택
from PySide6.QtWidgets import QApplication, QFileDialog
import sys
app = QApplication(sys.argv)
file_path, _ = QFileDialog.getOpenFileName(None, "Select Directory", "", "Directories (*)")
if file_path:
import os
directory = os.path.dirname(file_path)
print("Selected directory:", directory)
- 설명: 파일을 선택하는 다이얼로그에서 사용자가 디렉터리를 클릭하여 getOpenFileName()을 실행하게끔 함.
- 단점: 사용자가 디렉터리를 선택하려면 내부의 파일을 클릭해야 할 수도 있음.
방법 3: QFileDialog 설정을 직접 조정
from PySide6.QtWidgets import QApplication, QFileDialog
import sys
app = QApplication(sys.argv)
dialog = QFileDialog()
dialog.setFileMode(QFileDialog.Directory)
dialog.setOption(QFileDialog.ShowDirsOnly, True)
if dialog.exec():
selected_dir = dialog.selectedFiles()[0] # 선택된 디렉터리 경로 가져오기
print("Selected directory:", selected_dir)
- 설명: QFileDialog를 직접 생성한 후, setFileMode(QFileDialog.Directory)와 setOption(QFileDialog.ShowDirsOnly, True)를 설정하여 디렉터리만 선택하도록 조정.
- 장점: getExistingDirectory()와 동일한 방식이지만, 더 세밀한 설정이 가능.
결론
✅ 디렉터리 선택이 목적이라면 QFileDialog.getExistingDirectory()를 사용하는 것이 가장 깔끔하고 직관적입니다.
✅ QFileDialog.getOpenFileName()을 반드시 써야 한다면 os.path.dirname()을 활용하여 경로를 추출하는 방법이 있음.
✅ 커스텀 설정이 필요하다면 QFileDialog() 인스턴스를 생성하여 setFileMode(QFileDialog.Directory)를 설정하는 것이 좋음.
'PySide or PyQt' 카테고리의 다른 글
빈 공간 없이 애플리케이션의 크기를 알맞게 조정 (0) | 2025.02.20 |
---|---|
QSizePolicy (0) | 2025.02.20 |
QDialog, QMain Window, QWidget에 대해서 (0) | 2025.01.15 |
위젯 생성할 때 self를 파라미터에 왜 넣을까? (0) | 2025.01.15 |