2016-12-14 9 views
0

選択したフォルダのディレクトリパスを取得してLineEditで設定する方法についてアドバイスが必要です。PyQt5フォルダディレクトリを取得してラインエディットで設定する

私はツールボタン(赤い円の内側のボタン)をクリックした場合、ダイアログウィンドウがポップアップします以下のような簡単なGUI enter image description here

を持っています。次に、目的のフォルダを選択するために移動できます。私は、ユーザーがフォルダの選択をクリックすると、ボタンの隣にある行の編集ボックスに、選択したフォルダへのパス(文字列内)を渡すことができたらと思います。しかし、私はそれを行う方法を理解できませんでした。これまでのところ、ここに私のコードです:_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_()) 
関連する問題