Как выводить картинку в 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())

