【问题标题】:PyQt5 Retrieve Folder Directory and Set It in lineEditPyQt5 检索文件夹目录并在线设置
【发布时间】:2016-12-14 19:00:21
【问题描述】:

需要一些关于如何检索所选文件夹的目录路径并将其设置在 LineEdit 上的建议。

我有以下简单的 GUI

如果我单击工具按钮(红色圆圈内的按钮),则会弹出一个对话框窗口。然后我们可以导航以选择所需的文件夹。我希望一旦用户单击“选择文件夹”,我可以将所选文件夹的路径(以字符串形式)传递到按钮旁边的 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 函数中包含 print,它打印了目录路径。但是,它没有返回并保存在目录变量中。

任何建议将不胜感激。

感谢和问候,

阿诺德

【问题讨论】:

    标签: python-3.x pyqt5 qfiledialog


    【解决方案1】:

    找到了答案,.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_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      相关资源
      最近更新 更多