Appia의 IT세상

파이썬[Python GUI, PyQt5 Tutorial 016] 파일다이어로그(QFileDialog)만들기 본문

Python/Python PyQt5 (GUI)

파이썬[Python GUI, PyQt5 Tutorial 016] 파일다이어로그(QFileDialog)만들기

Appia 2020. 6. 30. 07:10
반응형

파이썬[Python GUI, PyQt5 Tutorial 016] 

파일다이어로그(QFileDialog)만들기 

 

이번 포스팅은 파일 다이어로그(QFileDialog)에 대해서 이야기를 해보고자 합니다. 흔히들 파일 다이어로그(QFileDialog)은 다음과 같은 화면을 나타냅니다. 

파일 다이어로그(QFileDialog)

이와 같은 화면을 나타내는 것을 파일 다이어로그(QFileDialog)라고 합니다. 흔히들 많이 보셨을 것이라고 생각합니다. 그럼 몇가지 상태로 해서, 한번 살펴보도록 하겠습니다. 

 

일단 몇가지 시나리오에 대해서 작성해보겠습니다. 버튼을 통해서 파일을 선택하거나, 파일을 작성할 이름을 입력하면, 관련된 부분은 라벨에 명시 되게 표시합니다. 이런 형태로 구성되게 코드를 작성해보겠습니다. 

import sys
 
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QFileDialog, QLabel
 
class QtGUI(QWidget):
 
    def __init__(self):
 
        super().__init__()
 
        self.num = 0
 
        self.setWindowTitle("Appia Qt GUI")
 
        self.resize(300300)
 
        self.qclist = []
 
        self.position = 0
 
        self.Lgrid = QGridLayout()
 
        self.setLayout(self.Lgrid)
 
        self.label1 = QLabel('',self)
 
        self.label2 = QLabel('', self)
 
        self.label3 = QLabel('', self)
 
        addbutton1 = QPushButton('Open File',self)
 
        self.Lgrid.addWidget(self.label1,1,1)
 
        self.Lgrid.addWidget(addbutton1,2,1)
 
        addbutton1.clicked.connect( self.add_open)
 
        addbutton2 = QPushButton('Save File', self)
 
        self.Lgrid.addWidget(self.label2, 31)
 
        self.Lgrid.addWidget(addbutton2, 41)
 
        addbutton2.clicked.connect(self.add_save)
 
        addbutton3 = QPushButton('Find Folder', self)
 
        self.Lgrid.addWidget(self.label3, 51)
 
        self.Lgrid.addWidget(addbutton3, 61)
 
        addbutton3.clicked.connect(self.find_folder)
 
 
        self.show()
 
 
    def add_open(self):
 
        FileOpen = QFileDialog.getOpenFileName(self, 'Open file''./')
 
        self.label1.setText(FileOpen[0])
 
 
    def add_save(self):
    
        FileSave = QFileDialog.getSaveFileName(self, 'Save file''./')
 
        self.label2.setText(FileSave[0])
 
 
    def find_folder(self):
 
        FileFolder = QFileDialog.getExistingDirectory(self,'Find Folder')
 
        self.label3.setText(FileFolder)
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

 

일단 위의 코드를 실행하면 다음과 같은 GUI 형태가 나타납니다. 

예제 실행 결과 

위에서 몇가지 부분에 대해서 확인 해보도록 하겠습니다. 

    def add_open(self):
 
        FileOpen = QFileDialog.getOpenFileName(self, 'Open file''./')
 
        self.label1.setText(FileOpen[0])
cs

위에서 QFileDialog.getOpenFileName()을 통해서 FileOpen 다이어로그가 나타납니다. 그리고 여기에서 나온 결과를 라벨에 표시하게 합니다. 그리고 GUI상에서 'Open File'을 클릭하면 다음과 같은 다이어로그가 나타납니다. 

QFileDialog.getOpenFileName() 실행화면

위의 GUI상에서 Save File을 클릭하면 구동하는 부분을 확인해보도록 하겠습니다. 

    def add_save(self):
    
        FileSave = QFileDialog.getSaveFileName(self, 'Save file''./')
 
        self.label2.setText(FileSave[0])
cs

QFileDialog.getSaveFileName()을 이름을 작성하고 저장을 누르면 관련된 부분에 대해서 저장됩니다. 

QFileDialog.getSaveFileName() 화면 

위의 GUI상에서 Find Folder을 클릭하면 구동하는 부분을 확인해보도록 하겠습니다. 

    def find_folder(self):
 
        FileFolder = QFileDialog.getExistingDirectory(self,'Find Folder')
 
        self.label3.setText(FileFolder)
cs

QFileDialog.getExistingDirectory()을 실행하면, 다음과 같은 다이어로그가 나타납니다. 

QFileDialog.getExistingDirectory()실행화면

폴더 선택하는 부분은 생각보다 기대이하였습니다. 그럼, 이 부분에 대해서 실행하면 각각 부분에 대해서 선택된 결과를 한번 보겠습니다. 

위와 같이 각 버튼이 누르고 파일을 선택되고, 관련된 부분에 대해서 라벨에 추가됩니다. 생각보다는 매우 간단합니다. 이번 포스팅은 파이썬[Python GUI, PyQt5 Tutorial 016] 파일다이어로그(QFileDialog)만들기 라는 주제로 포스팅을 한번 진행해 봤습니다. 실제 매우 많이 사용되고, 활용되는 부분입니다. 혹시 궁금하신점이나 문의 사항 있으시면 언제든지 댓글 및 방명록에 글남겨주시길 바랍니다. 감사합니다. 

반응형
Comments