Как выводить картинку в item, QListWidget

Я написал парсер OLX, который собирает название, ссылку, и скачивает картинку объявления. Вопрос: как в отдельный айтем, выводить картинку?

Пример


Ответы (1 шт):

Автор решения: Sergey Tatarincev

Выбирать вам. Как удобнее потом будет работать, так и делайте. Можете в QFrame компоновать, можете в таблице:

введите сюда описание изображения

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QWidget, QTableWidget, QFrame, QLabel, QPushButton, QMessageBox
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QSize


class MainWindow(QMainWindow):

    def createCellWidget(self, pix, text, btn):
        layout = QGridLayout()
        frame = QFrame()
        frame.setLayout(layout)
        picture = QLabel()
        picture.setPixmap(pix)
        layout.addWidget(picture, 0, 0, 2, 1)
        layout.addWidget(QLabel(text), 0, 1)
        button = QPushButton(btn)
        button.clicked.connect(lambda x: QMessageBox.information(self, 'clicked', 'button clicked'))
        layout.addWidget(button, 1, 1)
        return frame

    def __init__(self):
        QMainWindow.__init__(self)
        self.setMinimumSize(QSize(400, 400))
        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)
        grid_layout = QGridLayout()
        central_widget.setLayout(grid_layout)
        table = QTableWidget(self)
        table.setColumnCount(1)
        table.setRowCount(100)
        table.horizontalHeader().setStretchLastSection(True)
        table.verticalHeader().setMinimumSectionSize(100)
        table.verticalHeader().setVisible(False)
        table.horizontalHeader().setVisible(False)    
        for i in range(0, 100):
            pixmap = QPixmap('./my_pic.jpeg').scaled(100, 100)
            widget = self.createCellWidget(pixmap, f'hello here\ntext_{i}_0', f'button{i}_0')
            table.setCellWidget(i, 0, widget)
        grid_layout.addWidget(table, 0, 0)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec())
→ Ссылка