【问题标题】:Reading files in PyQt在 PyQt 中读取文件
【发布时间】:2017-01-20 14:22:17
【问题描述】:

我正在 PyQt4 中构建一个程序,它需要从多个文本文件中提取数据。我有一个可以选择文件的按钮:它的代码是

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

按下按钮时,我可以选择我需要的文本文件,但我无法阅读它们?当我要求它打印日志中的文件名时,它给了我<PyQt4.QtCore.QStringList object at 0x0000000002BD0BA8>

我也试过了:

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

但这给了IOError: [Errno 22] invalid mode ('r') or filename: '<PyQt4.QtCore.QStringList object at 0x0000000002F00BA8>,那么我如何使QStringList object 可读?

【问题讨论】:

    标签: python pyqt4 qstring qfiledialog


    【解决方案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)
    

    【讨论】:

    • 啊,好吧。因此,如果我想加载多个文件,我必须要么获取文件路径,然后将其传递到程序的另一部分,要么选择目录?
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 2013-01-08
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2011-07-15
    相关资源
    最近更新 更多