PyQt5-选择多个文件夹,并取到文件夹的目录

该博客介绍了如何利用PyQt5的QFileDialog控件,结合QListView和QTreeView实现多选文件夹功能。通过设置FileMode为DirectoryOnly和ExtendedSelection模式,可以实现用户在对话框中选择多个文件夹,并获取所选文件夹的路径。

PyQt5-选择多个文件夹,并取到文件夹的目录

1.概述

主要使用构造函数法使用QFileDialog控件,合理利用QListView、QTreeView,达到选择多个文件夹的功能。

2.代码实现

from PyQt5 import QtWidgets
import sys
from PyQt5.QtWidgets import QFileDialog, QListView, QAbstractItemView, QTreeView


class Window(QtWidgets.QWidget):

    def __init__(self):

        super(Window, self).__init__()

        self.button = QtWidgets.QPushButton('Test', self)

        self.button.clicked.connect(self.handleButton)

        layout = QtWidgets.QVBoxLayout(self)

        layout.addWidget(self.button)

    def handleButton(self):
        fileDlg = QFileDialog()
        fileDlg.setFileMode(QFileDialog.DirectoryOnly)
        fileDlg.setOption(QFileDialog.DontUseNativeDialog, True)
        fileDlg.setDirectory("d:/")
        listView = fileDlg.findChild(QListView, "listView")
        if listView:
            listView.setSelectionMode(QAbstractItemView.ExtendedSelection)
        treeView = fileDlg.findChild(QTreeView, "treeView")
        if treeView:
            treeView.setSelectionMode(QAbstractItemView.ExtendedSelection)
        if fileDlg.exec_():
            folders = fileDlg.selectedFiles()
            print(folders)
            # if folders.size()>0:
            #     nativePath = QDir.toNativeSeparators(folders[0])
            #     strDir = nativePath.left(nativePath.lastIndexOf(QDir.separator()))
            #     print(nativePath)
            #     print(strDir)
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

仅做记录自用

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值