PyQt5 - QFileDialog(파일선택 창 열기)
본문 바로가기
파이썬(Python)/파이썬 GUI(PyQt5 & tkinter)

PyQt5 - QFileDialog(파일선택 창 열기)

by 만초손겸수익 2020. 12. 15.

 

PyQt를 이용하여 클릭을 하면 파일을 선택할 수 있는 창을 여는 코드입니다.

 

import sys

from PyQt5.QtWidgets import *

 

필요한 모듈을 가져옵니다.

 

class MyWindow(QWidget):

    def __init__(self):

        super().__init__()

        self.setupUI()

 

클래스를 만들고 시작하면 setupUI함수를 불러올 수 있도록 합니다.

 

    def setupUI(self):

        self.setGeometry(800200300300)

        self.setWindowTitle('File Open Test')

 

UI 창 크기와 위치를 설정하고 타이틀도 적습니다.

 

        self.pushButton = QPushButton('File Open')

        self.pushButton.clicked.connect(self.pushButtonClicked)

        self.label = QLabel()

 

pushbutton을 만들고 'pushButtonClicked'라는 함수와 연결합니다.

 

        layout = QVBoxLayout()

        layout.addWidget(self.pushButton)

        layout.addWidget(self.label)

 

        self.setLayout(layout)

 

QVBoxLayout()을 사용하여 수직으로 창 크기가 변경되어도 레이블이나 푸쉬버튼 배열은 비율이 유지되게 합니다.

 

    def pushButtonClicked(self):

        fname = QFileDialog.getOpenFileName(self)

        self.label.setText(fname[0])

 

푸쉬버튼을 눌렀을때 함수를 작성합니다. 클릭하면 레이블에 파일 위치가 나오게 합니다.

 

if __name__=='__main__':

    app = QApplication(sys.argv)

    window = MyWindow()

    window.show()

    app.exec_()

 

메인을 정해줍니다.

 

아래는 전체 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
from PyQt5.QtWidgets import *
 
class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setupUI()
 
    def setupUI(self):
        self.setGeometry(800200300300)
        self.setWindowTitle('File Open Test')
 
        self.pushButton = QPushButton('File Open')
        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)
        self.label.setText(fname[0])
 
if __name__=='__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    app.exec_()
cs

아래는 실행 화면입니다.

 

728x90
반응형

댓글