2017-01-20 5 views
1

私はPyQt4でプログラムを構築しており、複数のテキストファイルからデータを取得する必要があります。私は、ファイルを選択するためのボタンがあります:それはボタンは私が必要とするテキストファイルを選択することができ押すとコードがPyQtでファイルを読む

qtCreatorFile = 'parser.ui' 

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) 

class MyApp(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     Ui_MainWindow.__init__(self) 
     self.setupUi(self) 

     self.file_selector.clicked.connect(self.File_Selector) 

     self.log 

    def File_Selector(self): 
     files_list = [] 
     filenames = str(QFileDialog.getOpenFileNames(self, "Select File", "", "*.txt")) 
     self.log.insertPlainText('Loading files ' + '\n') 
     self.log.insertPlainText(filenames + '\n') 

if __name__ == "__main__": 
     app = QtGui.QApplication(sys.argv) 
     window = MyApp() 
     window.show() 
     sys.exit(app.exec_()) 

であるが、私はそれらを読むことができていないよう?私はQStringList objectが読みやすくないか

text = open(filenames).read() 
    self.log.insertPlainText(text) 

をしかし、それはそうIOError: [Errno 22] invalid mode ('r') or filename: '<PyQt4.QtCore.QStringList object at 0x0000000002F00BA8>を与える:私はログにファイル名を印刷し、それを頼むとき、それは私も試した<PyQt4.QtCore.QStringList object at 0x0000000002BD0BA8>

私に与えますか?

答えて

1

QtGui.QFileDialog.getOpenFileNames(...)は、あなたがそれを開いて、それを読み込むことができませんので、あなたはそれを一つずつ実行する必要があり、文字列のリストを返します。

def File_Selector(self): 
    filenames = QtGui.QFileDialog.getOpenFileNames(self, "Select File", "", "*.txt") 
    self.log.insertPlainText('Loading files ' + '\n') 
    self.log.insertPlainText(str(filenames) + '\n') 
    for filename in filenames: 
     text = open(filename).read() 
     self.log.insertPlainText(text) 
+0

ああ大丈夫。だから私は複数のファイルをロードする場合は、ファイルパスを取得し、プログラムの別の部分に渡すか、ディレクトリを選択する必要がありますか? – Charlietrypsin