QFileDialog - 파일, 디렉토리 탐색 창
페이지정보
글쓴이 관리자 조회 42,047 조회 날짜 19-12-04 15:15 / U:22-12-05 02:04내용
QFileDialog - 파일, 디렉토리 탐색 창
특정 파일을 찾는 경우는 File Dialog를 사용하여 파일 및 디렉토리의 경로를 찾을 수 있다.
Python에서 File Dialog를 만드는 두 가지 방법을 소개한다.
1. QFileDialog
2. tkinter
동일한 기능을 하는 코드이나 결과 값을 받는 타입이 다르므로, 손에 맞는 코드를 사용하면 된다.
기본 코드는 아래와 같다.
1. QFileDialog
QFileDialog 모듈을 이용한 다이얼로그 방식은 static functions과 non static functions의 두 가지 방법이 있다.
1) Static Functions
a) 단일 파일 선택
from PySide6.QtWidgets import QFileDialog
fileName = QFileDialog.getOpenFileName(self, self.tr("Open Data files"), "./", self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)")) |
b) 다중 파일 선택
from PySide6.QtWidgets import QFileDialog
fileNames = QFileDialog.getOpenFileNames(self, self.tr("Open Data files"), "./", self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)")) |
c) 디렉토리 선택
from PySide6.QtWidgets import QFileDialog
dirName = QFileDialog.getExistingDirectory(self, self.tr("Open Data files"), "./", QFileDialog.ShowDirsOnly) |
d) 파일 저장 이름 선택
from PySide6.QtWidgets import QFileDialog
fileName = QFileDialog.getSaveFileName(self, self.tr("Save Data files"), "./", self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)")) |
# File Dialog 창 이름 : self.tr("Open Data files")
# File Dialog 초기 경로 : "./"
# File Dialog에서 보여줄 파일 종류 : self.tr("Data Files (*.csv *.xls *.xlsx);; Images (*.png *.xpm *.jpg *.gif);; All Files(*.*)") - 서로 다른 종류는 두 개의 세미콜론(;;)으로 구분한다.
QFileDialog는 파일 경로의 결과를 두 개의 값을 튜플로 반환한다. 첫번째 값은 파일 경로, 두번째 값은 파일 종류이다.
2) Non static Functions
a) 단일 파일 선택
from PySide6.QtWidgets import QFileDialog
dialog = QFileDialog(self) |
b) 다중 파일 선택
from PySide6.QtWidgets import QFileDialog
dialog = QFileDialog(self) |
c) 디렉토리 선택
from PySide6.QtWidgets import QFileDialog
dialog = QFileDialog(self) |
2. tkinter
a) 단일 파일 선택
from tkinter import *
|
b) 다중 파일 선택
from tkinter import *
|
c) 디렉토리 선택
from tkinter import *
|
# File Dialog 초기 경로 : initialdir="./"
# File Dialog 창 이름 : title="Open Data files"
# File Dialog에서 보여줄 파일 종류 : filetypes=(("data files", "*.csv;*.xls;*.xlsx"), ("all files", "*.*"))
#### root.withdraw() --> 이것을 실행하지 않으면 아래의 그림과 작은 tk 창이 남아있다. 따라서 이 창을 제거해주기 위해서 withdraw()를 실행해준다.
실제 코드를 연습한다.
아래와 같이 간단한 버튼과 결과를 볼수 있는 ui 파일을 만들어 filedialog.ui로 저장한다.
Static Function - 단일파일 objectName = BTN_filedialog_s1
Static Function - 다중파일 objectName = BTN_filedialog_s2
Static Function - 디렉토리 objectName = BTN_filedialog_s3
Nonstatic Function - 단일파일 objectName = BTN_filedialog_ns1
Nonstatic Function - 다중파일 objectName = BTN_filedialog_ns2
Nonstatic Function - 디렉토리 objectName = BTN_filedialog_ns3
단일파일 objectName = BTN_tkinter_1
다중파일 objectName = BTN_tkinter_2
디렉토리 objectName = BTN_tkinter_3
TextBrowser objectName = TBrowser
전체 코드
import sys
class MainView(QMainWindow): def __init__(self):
def setupUI(self):
UI_set = QtUiTools.QUiLoader().load(resource_path("filedialog.ui"))
# self.tr 메서드는 QMainWindow object를 받아 실행하기 때문에 # 클래스 내부에 FilesOpen01 ~ FilesOpen06 메서드를 만듬
UI_set.BTN_filedialog_ns1.clicked.connect(self.FilesOpen04)
UI_set.BTN_tkinter_1.clicked.connect(FileOpen01)
self.setCentralWidget(UI_set)
# static function 단일 파일
# static function 다중 파일
# static function 디렉토리
# Non static function 단일 파일
# Non static function 다중 파일
# Non static function 단일 파일
# tkinter 단일 파일 UI_set.TBrowser.setText(str(root.filename))
# tkinter 다중 파일 UI_set.TBrowser.setText(str(root.filename))
# tkinter 디렉토리 파일 UI_set.TBrowser.setText(str(root.filename))
# 파일 경로
if __name__ == '__main__': |
결과
결과로 받는 값의 데이터 타입이 모두 다르므로 그에 맞춰 후작업을 코딩하면 된다.
실행
QFileDialog로 실행한 결과
1) Static function 단일파일
2) Static function 다중파일
3) Static function 디렉토리
4) Nonstatic function 단일파일
5) Nonstatic function 다중파일
6) Nonstatic function 디렉토리
tkinter로 실행한 결과
1) 단일파일
2) 다중파일
3) 디렉토리
출처 :
QFileDialog - https://doc.qt.io/qtforpython/PySide6/QtWidgets/QFileDialog.html
댓글목록
댓글이 없습니다