繁体   English   中英

PyQt QFileDialog - 多目录选择

[英]PyQt QFileDialog - Multiple Directory Selection

我正在尝试创建一个允许用户选择多个目录的QFileDialog。

这里讨论和常见问题之后 ,但我不确定我做错了什么。 我得到一个文件对话框,但它仍然只允许我选择一个目录(文件夹)。

这是在Windows 7上

码:

class FileDialog(QtGui.QFileDialog):
        def __init__(self, *args):
            QtGui.QFileDialog.__init__(self, *args)
            self.setOption(self.DontUseNativeDialog, True)
            self.setFileMode(self.DirectoryOnly)

            self.tree = self.findChild(QtGui.QTreeView)
            self.tree.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)

            self.list = self.findChild(QtGui.QListView)
            self.list.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    ex = FileDialog()
    ex.show()
    sys.exit(app.exec_())

编辑:

所以在玩了这个之后,如果我在文件对话框中选择“详细视图”,多选工作。 但是,如果我选择“列表视图”它不起作用。 知道为什么吗?

FAQ中的示例代码不健壮,因为它假定对话框只有一个QListView和一个QTreeView 当有几个直接子对象时, findChild的行为是不确定的:所以它可能只是纯粹的运气它曾经工作过。

更强大的解决方案是在其模型类型为QFileSystemModel任何视图上重置选择模式:

for view in self.findChildren((QtGui.QListView, QtGui.QTreeView)):
    if isinstance(view.model(), QtGui.QFileSystemModel):
        view.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM