Первоначально я хотел предложить написание обратного вызова для currentChanged сигнала, который отслеживает выбор, но кажется, что этот сигнал не будет вызван при использовании getOpenFileNames. Альтернативой будет отображение диалога с show() и подключение обратного вызова к файламSelected, который вызывается после того, как пользователь нажимает кнопку «открыть» в диалоговом окне. Аргументом для обратного вызова является список с выбранными файлами, который, кажется, находится в порядке их выбора (просто протестировал его на python3/pyqt4).
def callback(files):
joined_files = ''.join([open(f).read() for f in files])
do_something_with(joined_files)
dialog = QtGui.QFileDialog()
dialog.setFileMode(3) #allow selection of multiple files
dialog.filesSelected.connect(callback)
dialog.show()
Одна проблема состоит в том, что заказ не показан пользователю в удобном способом - «файл» текстовое поле содержит имена заказанных файлы, но это грязно, когда вы выбираете больше, чем несколько файлы. Лучшим, но немного более сложным подходом было бы создание виджета или диалога с FileDialog для выбора файлов и List/TableWidget, содержащих файлы для обработки, где пользователь мог бы добавлять файлы по одному за раз. Это позволит лучше просматривать, а также легко выбирать файлы из нескольких каталогов и улучшать расширяемость (например, фильтровать, переупорядочивать, сортировать выделение).
Спасибо. Удивительно, что нет более простого способа сделать это. – madu