两个QListView框,一个显示文件夹中的文件,另一个显示从第一个QListview中选择的文件

时间:2018-11-12 21:31:47

标签: python pyqt pyqt5 qlistview qfilesystemmodel

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.listview = QListView()
        self.listview2 = QListView()

        hlay.addWidget(self.listview)
        hlay.addWidget(self.listview2)

        path = r'C:\Users\Desktop\Project'

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

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


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

我想从我的文件夹中显示列表视图中的文件,其中包含代码中描述的路径,并且能够 选择它们,我选择的文件将显示在listview2中,但是listview不显示 该路径中的文件。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

由于您尚未在def tracing_func(func_name, args): if func_name in ['func', 'foo']: log_func_args(func_name, args) 中设置rootPath,因此不会显示文件。

另一方面,第二个QFileSystemModel必须具有一个模型,其中在选择或取消选择项目时可以添加或删除项目,为此,您必须使用QListView的{​​{1}}信号第一个selectionChanged,该信号传输选定和未选定项目的信息。

要更改颜色,您必须获得selectionModel()并使用具有QListView角色的QStandardItem方法。在示例中,每秒都会随机更改颜色

setData()