파이썬(Python)/파이썬 GUI(PyQt5 & tkinter)

PyQt5 - (Qt designer) QFileDialog 를 이용하여 여러파일 이름 출력

대충살아볼까 2020. 12. 17. 05:27

Qt designer와 QFileDialog를 이용하여 여러 파일의 이름을 출력해 보겠습니다.

 

우선 Qt designer에서 아래와 같이 Dialog와 버튼, textEdit을 만듭니다.

(lineEdit이 아니라 textEdit을 사용하였으니 유의하시기 바랍니다.)

 

import sys

from PyQt5.QtWidgets import *

from PyQt5 import uic

 

필요한 모듈을 불러옵니다.

 

test_ui = r'C:\Users\Administrator\Desktop\Test.ui'

 

만들어진 UI 파일의 경로를 'test_ui'라는 변수에 넣습니다.

 

class MainDialog(QDialog):

    def __init__(self):

        QDialog.__init__(selfNone)

        uic.loadUi(test_ui, self)

 

QDialog 클래스를 상속받아 MainDialog 클래스를 만들고 시작하게 합니다.

그리고 만들어진 UI를 Load 해 줍니다.

 

self.PushButton1.clicked.connect(self.Button_click)

 

푸쉬버튼이 클릭되면 동작을 할 수 있도록 연결합니다.

 

    def Button_click(self):

        file_names = QFileDialog.getOpenFileNames(self)

 

버튼이 클릭되면 QFileDialog 에서 getOpenFileNames 라는 속성을 사용해서 여러 파일을 선택할 수 있습니다.

각각의 파일이름은 'file_names' 변수에 듀플형태로 저장됩니다.

 

        for file in file_names[0]:

            exist = self.textEdit.toPlainText()

            self.textEdit.setText(exist + file + '\n')

 

'file_names[0]'은 파일이름만 List 형태로 표시됩니다.

For문을 사용하여 각각의 파일 이름이 textEdit에 표시됩니다.

 

※ lineEdit은 한 줄만 입력이 되는데 반해, textEdit은 여러줄 입력이 가능합니다.

 

전체 코드는 아래와 같습니다.

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
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
 
test_ui = r'C:\Users\Administrator\Desktop\Test.ui'
 
class MainDialog(QDialog):
    def __init__(self):
        QDialog.__init__(selfNone)
        uic.loadUi(test_ui, self)
 
        self.PushButton1.clicked.connect(self.Button_click)
 
    def Button_click(self):
        file_names = QFileDialog.getOpenFileNames(self)
 
        for file in file_names[0]:
            exist = self.textEdit.toPlainText()
            self.textEdit.setText(exist + file + '\n')
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    Dialog = MainDialog()
    Dialog.show()
    app.exec_()
cs

 

아래는 실행 화면입니다.

 

728x90