Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按文件名过滤QFileSystemModel的文件列表?_Python_Pyqt5_Pyside2_Qfilesystemmodel - Fatal编程技术网

Python 如何按文件名过滤QFileSystemModel的文件列表?

Python 如何按文件名过滤QFileSystemModel的文件列表?,python,pyqt5,pyside2,qfilesystemmodel,Python,Pyqt5,Pyside2,Qfilesystemmodel,我想制作一个可以显示特定文件夹的管理器。 假设我想筛选出没有扩展名的文件夹 尝试1:QFileSystemModel.setNameFilters() 尝试2:QtCore.QSortFilterProxyModel() 我试图修改正则表达式,但结果是一样的 只支持通配符,不支持正则表达式,因此失败 使用已实现筛选名称不具有扩展名的文件夹 导入操作系统 从PyQt5导入QtCore、QtGui、QtWidgets 如果名称=“\uuuuu main\uuuuuuuu”: 导入系统 app=qt

我想制作一个可以显示特定文件夹的管理器。 假设我想筛选出没有扩展名的文件夹

尝试1:QFileSystemModel.setNameFilters()

尝试2:QtCore.QSortFilterProxyModel()

我试图修改正则表达式,但结果是一样的

  • 只支持通配符,不支持正则表达式,因此失败

  • 使用已实现筛选名称不具有扩展名的文件夹

  • 导入操作系统
    从PyQt5导入QtCore、QtGui、QtWidgets
    如果名称=“\uuuuu main\uuuuuuuu”:
    导入系统
    app=qtwidts.QApplication(sys.argv)
    path=os.path.join(os.path.dirname(os.path.realpath(_文件__)),“56627022”)
    dirModel=qtwidts.QFileSystemModel()
    dirModel.setRootPath(QtCore.QDir.rootPath())
    dirModel.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Dirs)
    view1=qtwidts.QTreeView()
    视图1.setModel(dirModel)
    view1.setRootIndex(dirModel.index(path))
    proxyModel=QtCore.QSortFilterProxyModel()
    proxyModel.setSourceModel(dirModel)
    proxyModel.setFilterRegExp(r“^([^.]+)$”)
    view2=qtwidts.QTreeView()
    视图2.setModel(proxyModel)
    view2.setRootIndex(proxyModel.mapFromSource(dirModel.index(path)))
    w=qtwidts.QWidget()
    hlay=qtwidts.QHBoxLayout(w)
    hlay.addWidget(视图1)
    hlay.addWidget(视图2)
    w、 show()
    sys.exit(app.exec_())
    

    ... ...
    
    # get file data
    path = 'f:/tmp2'
    dirModel = QtWidgets.QFileSystemModel()
    dirModel.setRootPath(path)
    dirModel.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Dirs) 
    
    # filter folders
    dirModel.setNameFilters(['*.asset']) 
    # worked. but i want the opposite: that folders do not contain ".asset".
    
    #dirModel.setNameFilters(['(^\.asset)$']) 
    # regular expression is not work. nothing shows up.
    
    # show window
    ... ... 
    
    ... ...
    # get file data
    path = 'f:/tmp2'
    dirModel = QtWidgets.QFileSystemModel()
    dirModel.setRootPath(path)
    dirModel.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Dirs) 
    
    # filter folders
    proxyModel = QtCore.QSortFilterProxyModel()
    proxyModel.setSourceModel(dirModel)
    proxyModel.setFilterRegExp("(^\.asset)$") # if no this line, all folders are displayed; add this line, nothing shows up.
    
    # show window
    ... ...