为什么QFileDialog的selectedFiles方法返回一个过时的文件列表?

问题描述 投票:1回答:1

通过修改布局以包含pyqtgraph QFileDialog,我成功地向PlotWidget添加了用于科学数据的预览窗格。我将currentChanged信号连接到一个自定义函数,该函数根据从信号接收到的文件名作为参数来绘制数据。一切都很好。

接下来,我尝试查看是否可以同时绘制多个不同的文件。由于currentChanged仅传递最近选择的文件,因此我尝试使用selectedFiles方法获取所选文件的列表。我发现列表总是过时的:它包含除最近选择的值以外的所有值。感觉像个虫子...

不幸的是,我无法简单地将currentChanged传递的文件名附加到QStringList返回的selectedFiles,因为在某些情况下会产生错误的结果:当我从选择八个文件变成只有一个文件时。

是否有任何方法可以强制更新当前选定值的列表?

这是我目前正在使用的代码。我在Linux Mint 16上使用PyQt4版本4.10.3。

preview_dialog = QFileDialog()
preview_dialog.setFileMode(QtGui.QFileDialog.ExistingFiles)

def processFiles(filename):
    # The passed filename is always correct
    print filename

    # The following always returns an outdated list
    all_files = preview_dialog.selectedFiles()

    for f in all_files:
        do_something_with_my_file(str(f))

preview_dialog.currentChanged.connect(processFiles)
preview_dialog.exec_()

非常感谢您的帮助。

我已经通过修改布局以包含pyqtgraph PlotWidget的方式将科学数据的预览窗格成功添加到QFileDialog。我将currentChanged信号连接到一个自定义函数,......>

python pyqt
1个回答
0
投票

python 3.6pyqt 5.6相同,在selectedFiles侦听器中调用currentChanged时,它不返回当前选择的文件,而是返回前一个文件。例如,第一次选择文件selectedFiles将返回一个空列表,然后在选择第二个文件时将返回仅包含所选第一个文件的列表,依此类推。我也没有找到强制selectedFiles更新的方法。对我来说,这看起来也像个虫子。如果有人需要,可以在这里解决此问题:https://bugreports.qt.io/browse/QTBUG-4000

© www.soinside.com 2019 - 2024. All rights reserved.