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