2016-12-14 2 views
0

선택한 폴더의 디렉토리 경로를 검색하고 LineEdit에서 설정하는 방법에 대한 조언이 필요합니다.PyQt5 폴더 디렉토리 검색 및 라인 편집에서 설정

나는 내가 toolButton (붉은 원 안에 버튼)을 클릭하면 enter image description here

는, 다음 대화 상자가 팝업 할 다음과 같은 간단한 GUI를 가지고있다. 그런 다음 원하는 폴더를 탐색 할 수 있습니다. 사용자가 폴더 선택을 클릭하면 버튼 옆에있는 라인 편집 (RowEdit) 상자로 선택된 폴더로 패스 (문자열)를 전달할 수 있기를 바랍니다. 그러나, 나는 그것을 어떻게하는지 이해할 수 없었다. 지금까지 여기 내 코드는 다음 _open_file_dialog 기능에서 인쇄를 포함

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_TestQFileDialog(object): 
    def _open_file_dialog(self): # a function to open the dialog window 
     result = str(QtWidgets.QFileDialog.getExistingDirectory()) 
     print(result) 
     return result 

    def setupUi(self, TestQFileDialog): 
     TestQFileDialog.setObjectName("TestQFileDialog") 
     TestQFileDialog.resize(240, 320) 

     self.toolButtonOpenDialog = QtWidgets.QToolButton(TestQFileDialog) 
     self.toolButtonOpenDialog.setGeometry(QtCore.QRect(210, 10, 25, 19)) 
     self.toolButtonOpenDialog.setObjectName("toolButtonOpenDialog") 
     directory = self.toolButtonOpenDialog.clicked.connect(self._open_file_dialog) 

     self.lineEdit = QtWidgets.QLineEdit(TestQFileDialog) 
     self.lineEdit.setEnabled(False) 
     self.lineEdit.setGeometry(QtCore.QRect(10, 10, 191, 20)) 
     self.lineEdit.setObjectName("lineEdit") 
     self.lineEdit.setText('{}'.format(directory)) 

     self.retranslateUi(TestQFileDialog) 
     QtCore.QMetaObject.connectSlotsByName(TestQFileDialog) 

    def retranslateUi(self, TestQFileDialog): 
     _translate = QtCore.QCoreApplication.translate 
     TestQFileDialog.setWindowTitle(_translate("TestQFileDialog", "Dialog")) 
     self.toolButtonOpenDialog.setText(_translate("TestQFileDialog", "...")) 


if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    TestQFileDialog = QtWidgets.QDialog() 
    ui = Ui_TestQFileDialog() 
    ui.setupUi(TestQFileDialog) 
    TestQFileDialog.show() 
    sys.exit(app.exec_()) 

을 시도, 그리고 디렉토리 경로를 출력한다. 그러나 리턴되지 않고 디렉토리 변수에 보관됩니다.

모든 조언을 주시면 감사하겠습니다.

감사와 관련, 답을 찾을 수

아놀드

답변

2

는 .setText 방법은 _open_file_dialog 기능에 포함되어야한다.

따라서, 최종 코드는 다음과 같습니다

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_TestQFileDialog(object): 
    def _open_file_dialog(self): 
     directory = str(QtWidgets.QFileDialog.getExistingDirectory()) 
     self.lineEdit.setText('{}'.format(directory)) 

    def _set_text(self, text): 
     return text 

    def setupUi(self, TestQFileDialog): 
     TestQFileDialog.setObjectName("TestQFileDialog") 
     TestQFileDialog.resize(240, 320) 

     self.toolButtonOpenDialog = QtWidgets.QToolButton(TestQFileDialog) 
     self.toolButtonOpenDialog.setGeometry(QtCore.QRect(210, 10, 25, 19)) 
     self.toolButtonOpenDialog.setObjectName("toolButtonOpenDialog") 
     self.toolButtonOpenDialog.clicked.connect(self._open_file_dialog) 

     self.lineEdit = QtWidgets.QLineEdit(TestQFileDialog) 
     self.lineEdit.setEnabled(False) 
     self.lineEdit.setGeometry(QtCore.QRect(10, 10, 191, 20)) 
     self.lineEdit.setObjectName("lineEdit") 

     self.retranslateUi(TestQFileDialog) 
     QtCore.QMetaObject.connectSlotsByName(TestQFileDialog) 

    def retranslateUi(self, TestQFileDialog): 
     _translate = QtCore.QCoreApplication.translate 
     TestQFileDialog.setWindowTitle(_translate("TestQFileDialog", "Dialog")) 
     self.toolButtonOpenDialog.setText(_translate("TestQFileDialog", "...")) 


if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    TestQFileDialog = QtWidgets.QDialog() 
    ui = Ui_TestQFileDialog() 
    ui.setupUi(TestQFileDialog) 
    TestQFileDialog.show() 
    sys.exit(app.exec_())