如何显示指定目录中的文件列表

2024-10-01 13:37:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如:在这个QFileSystemModelDialog应用程序的右窗格中

Like in the right pane of this QFileSystemModelDialog app


Tags: 文件代码目录应用程序方式pyqtlistview窗格
1条回答
网友
1楼 · 发布于 2024-10-01 13:37:04

{1}另一个要显示目录。要更改QListView的视图,必须使用单击的信号,使用QModelIndex设置新的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_())

相关问题 更多 >