左边呢将文件夹和文件归类显示简单的做了一个分享,今天呢想把读取出的系统图标更换为自定义图标,经过摸索发现,终于这个功能实现了,但是呢和我们昨天实现稍微有些不同,昨天我们进行左右文件归类时使用的是PyQT5中的QWidget进行数据显示,但是呢今天使用的是QFileIconProvider,它和QWidget的区别在于将所有的呈现类型都定义在了主的main函数中,和我们之前调用完全相反了,但是呢并不是完全合并bu进去,如果需要合并需要在QWidget中调用QFileIconProvider内容,请看如下代码,希望能够给大家带来帮助。
QWidget调用QFileIconProvider内容:需要先引用下方py文件才能使用
model.setIconProvider(FileIconProvider())
完全使用QFileIconProvider进行自定义图标呈现:
import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtCore import QFileInfo
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QFileSystemModel, QFileIconProvider, QApplication,\QTreeViewclass FileIconProvider(QFileIconProvider):def __init__(self, *args, **kwargs):super(FileIconProvider, self).__init__(*args, **kwargs)self.DirIcon = QIcon("D:\DataGost\Python\Dear\wjj-djq.png")def icon(self, type_info):if isinstance(type_info, QFileInfo):return self.getInfoIcon(type_info)if type_info == QFileIconProvider.Folder:# 如果是文件夹return self.DirIconreturn super(FileIconProvider, self).icon(type_info)def getInfoIcon(self, type_info):if type_info.isDir(): # 文件夹return self.DirIconreturn super(FileIconProvider, self).icon(type_info)if __name__ == "__main__":app = QApplication(sys.argv)model = QFileSystemModel()model.setFilter(QtCore.QDir.Dirs | QtCore.QDir.NoDotAndDotDot)model.setIconProvider(FileIconProvider()) # 设置为自定义的图标提供类model.setRootPath("")tree = QTreeView()tree.setModel(model)for col in range(1, 4):tree.setColumnHidden(col, True)tree.setWindowTitle("Dir View")tree.resize(640, 480)tree.show()sys.exit(app.exec_())
效果如下: