为什么QFileDialog的selectedFiles方法会返回过期的文件列表?

2024-04-26 03:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

通过修改布局以包含pyqtgraphPlotWidget,我成功地将科学数据的预览窗格添加到了QFileDialog。我将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_()

非常感谢您的帮助。你知道吗


Tags: 文件the数据函数列表信号文件名绘制