2016-12-14 7 views
0

Нужна помощь в том, как получить путь к каталогу для выбранной папки и установить его в LineEdit.PyQt5 Восстановить каталог папок и установить его в lineEdit

У меня есть следующий простой графический интерфейс enter image description here

Если я нажал ToolButton (кнопка внутри красного круга), то диалоговое окно будет всплывающее. Затем мы можем перейти к выбору нужной папки. Я хочу, чтобы я мог передать путь (в строке) к выбранной папке в поле lineEdit рядом с кнопкой, как только пользователь нажмет кнопку «Выбрать папку». Однако я не мог понять, как это сделать. До сих пор вот мой код:

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_()) 

Пробовал включать печать в _open_file_dialog функции, и он напечатал путь к каталогу. Однако он не был возвращен и сохранен в переменной каталога.

Любые советы будут высоко оценены.

Спасибо и уважение,

Арнольд

ответ

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_()) 

 Смежные вопросы

  • Нет связанных вопросов^_^