python-PyQt QFileDialog-多目录选择
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-PyQt QFileDialog-多目录选择,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1264字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试创建一个QFileDialog,允许用户选择多个目录.
在讨论here和faq here之后,但我不确定自己在做什么错.我得到一个文件对话框,但它仍然只允许我选择一个目录(文件夹).
这是在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)
内容总结
以上是互联网集市为您收集整理的python-PyQt QFileDialog-多目录选择全部内容,希望文章能够帮你解决python-PyQt QFileDialog-多目录选择所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。