Python Qt QFileDialog::getopenFileNames - 文件选择顺序

3

我正在编写一个小型的Python代码,用于合并文本文件,并且这些文件是通过用户输入选择的。但是很重要的是我需要获取用户选择的顺序,因为我想按照所选的顺序合并文件。但是我发现getOpenFileNames返回的列表没有保留选择的顺序。

有人有捕获选择顺序的建议吗?

谢谢。

2个回答

1
self.filename = QtGui.QFileDialog.getOpenFileNames(
    self,
    "Cargar tu documento",
    self.lastOpenedFile,
    "*.doc;*.odt;*.pdf" )

请问您能解释一下self.lastOpenedFile的含义吗?这段代码在我本地无法运行。谢谢。 - madu

1
我原本想建议编写一个回调函数来跟踪选择的currentChanged信号,但是当使用getOpenFileNames时,似乎这个信号不会被调用。另一种方法是使用show()显示对话框,并将回调连接到filesSelected,该回调在用户单击对话框上的“打开”按钮后调用。回调的参数是所选文件的列表,它们似乎按照选择的顺序排列(我刚在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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接