This tutorial show you how to use QStandardItem with Images.
The source code is simple to understand.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeView
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont, QColor, QImage, QStandardItemModel, QStandardItem
class ItemImage(QStandardItem):
def __init__(self, txt='', image_path='', set_bold=False, color=QColor(0, 0, 0)):
super().__init__()
self.setEditable(False)
self.setForeground(color)
self.setText(txt)
if image_path:
image = QImage(image_path)
self.setData(image, Qt.DecorationRole)
class MyApp(QMainWindow):
def __init__(self):
super().__init__()
self.resize(1200, 1200)
treeView = QTreeView()
treeView.setHeaderHidden(True)
treeView.header().setStretchLastSection(True)
treeModel = QStandardItemModel()
rootNode = treeModel.invisibleRootItem()
robots = ItemImage('Robots', '', set_bold=True)
aaa = ItemImage('aaa.jpg', 'aaa.jpg', 14)
robots.appendRow(aaa)
bbb = ItemImage('bbb.jpg', 'bbb.jpg', 16)
robots.appendRow(bbb)
robots2 = ItemImage('Robots 2', '', set_bold=False)
aaa = ItemImage('ccc.png', 'ccc.png', 14)
robots2.appendRow(aaa)
bbb = ItemImage('ddd.jpg', 'ddd.jpg', 16)
robots2.appendRow(bbb)
rootNode.appendRow(robots)
rootNode.appendRow(robots2)
treeView.setModel(treeModel)
treeView.expandAll()
self.setCentralWidget(treeView)
app = QApplication(sys.argv)
demo = MyApp()
demo.show()
sys.exit(app.exec_())
The result is this: