如何显示指定目录中的文件列表 [英] How to Display List of Files in A specified directory

查看:300
本文介绍了如何显示指定目录中的文件列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在PyQt窗口的代码中指定的目录中以ListView方式显示文件

How to display in a ListView manner files in a directory specified in the code in a PyQt window

示例:类似于此QFileSystemModelDialog应用程序的右窗格

example : Like in the right pane of this QFileSystemModelDialog app

推荐答案

您必须创建2个QFileSystemModel,一个显示目录,另一个显示文件.要更改QListView的视图,必须使用单击的信号,并使用QModelIndex设置新的rootIndex.

You have to create 2 QFileSystemModel, one will show the directories and the other the files. To change the view of the QListView you must use the clicked signal, using the QModelIndex you set the new rootIndex.

import sys

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Widget(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        hlay = QHBoxLayout(self)
        self.treeview = QTreeView()
        self.listview = QListView()
        hlay.addWidget(self.treeview)
        hlay.addWidget(self.listview)

        path = QDir.rootPath()

        self.dirModel = QFileSystemModel()
        self.dirModel.setRootPath(QDir.rootPath())
        self.dirModel.setFilter(QDir.NoDotAndDotDot | QDir.AllDirs)

        self.fileModel = QFileSystemModel()
        self.fileModel.setFilter(QDir.NoDotAndDotDot |  QDir.Files)

        self.treeview.setModel(self.dirModel)
        self.listview.setModel(self.fileModel)

        self.treeview.setRootIndex(self.dirModel.index(path))
        self.listview.setRootIndex(self.fileModel.index(path))

        self.treeview.clicked.connect(self.on_clicked)

    def on_clicked(self, index):
        path = self.dirModel.fileInfo(index).absoluteFilePath()
        self.listview.setRootIndex(self.fileModel.setRootPath(path))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

这篇关于如何显示指定目录中的文件列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆