[Pyqt5] 파일,폴더 선택 창 나오게 하기

반응형
    반응형

    pyqt로 파일 불러오기 창이 나오게 하는 방법입니다. 개인적으로 프로그램 내에서 파일 불러오거나 폴더를 지정할 때 편해서 자주 쓰게 되는 기능입니다.

    파일선택창

    간단하게 pushbutton을 누르면 파일선택창이나 폴더선택창이 나오도록 하겠습니다.

    
    import sys
    from PyQt5.QtWidgets import *
    
    class MyWindow(QWidget):
        def __init__(self):
            super().__init__()
            self.setupUI()
    
    
        def setupUI(self):  #레이아웃만들기
            self.setGeometry(200,150,300,300)
    
    
            self.pushButton= QPushButton('Open file')
            self.pushButton.clicked.connect(self.pushButtonClicked)
            self.label = QLabel()
    
            layout = QVBoxLayout()
            layout.addWidget(self.pushButton)
            layout.addWidget(self.label)
    
            self.setLayout(layout)
    
    
        def pushButtonClicked(self): #파일선택창 만들기
            fname = QFileDialog.getOpenFileName(self,'파일선택','','All Files(*.*')
            self.label.setText(fname[0]) #파일선택시 파일경로 출력
    
    if __name__ == '__main__':
        app= QApplication(sys.argv)
        window= MyWindow()
        window.show()
        sys.exit(app.exec_())
    fname = QFileDialog.getOpenFileName(self, '파일 불러오기', '/home')

    py파일을 실행하면 위와 같이 나오고 Open file을 클릭하면 아래와 같이 파일선택을 할 수 있게 됩니다.

    getOpenFilenName이라는 메쏘드로 가능한건데
    파라미터는 (self,'창타이틀','시작경로','선택하는 파일형식')를 가장 많이 씁니다.
    시작경로를 따로 정하면 정한 경로로 파일선택창이 열리게 됩니다.

    폴더선택창

    이번엔 폴더선택창입니다. 파일선택창은 파일이 선택되어서 나오는 경우이고 이번에는 폴더를 선택하는 경우입니다.

    폴더선택창은 QFileDialog.getExistingDirectory() 메쏘드로 가능합니다.
    똑같은 레이아웃에 폴더선택 pushbutton을 추가하겠습니다.

    
    import sys
    from PyQt5.QtWidgets import *
    
    class MyWindow(QWidget):
        def __init__(self):
            super().__init__()
            self.setupUI()
    
        def setupUI(self):
            self.setGeometry(200,150,300,300)   
            self.pushButton= QPushButton('Open file',self)
            self.pushButton.setGeometry(50,50,100,30)
            self.pushButton.clicked.connect(self.pushButtonClicked)
            self.label = QLabel()
    
            self.pushButton2 = QPushButton('Open folder',self)
            self.pushButton2.setGeometry(50,100,100,30)
            self.pushButton2.clicked.connect(self.folderopen)      
    
        def pushButtonClicked(self):
            fname = QFileDialog.getOpenFileName(self,'파일선택','','All Files(*.*')
            self.label.setText(fname[0])
    
        def folderopen(self):
            fname = QFileDialog.getExistingDirectory(self,'폴더선택','')
            self.label.setText(fname[0])
    
    if __name__ == '__main__':
        app= QApplication(sys.argv)
        window= MyWindow()
        window.show()
        sys.exit(app.exec_())

    Open folder를 눌러보면 폴더선택창이 나옵니다.

    댓글

    Designed by JB FACTORY

    ....