PyQt5 - как поставить картинку в tableWidget?

Как поставить картинку например в ячейку в table widget ?

Меня интересует больше что-то например:

self.tableWidget.horizontalHeaderItem(2).setIcon \ set. ... ? 

Но буду благодарен за любую помощь

Моя таблица

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

Хорошего тебя дня! :3


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

Автор решения: S. Nick

Попробуйте так:

import sys
from PyQt5.Qt import *


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.tableWidget = QTableWidget(3, 3)
        self.tableWidget.setHorizontalHeaderLabels(['Product', 'Description', 'Likes/UnLikes'])
        self.tableWidget.setColumnWidth(2, 150)
        vh = self.tableWidget.verticalHeader()
        vh.setDefaultSectionSize(100)
        self.setCentralWidget(self.tableWidget)
        
        for x in range(3):
            self.button = QPushButton('Likes/UnLikes', self) 
            self.button.setFlat(True)
            self.tableWidget.setItem(x, 0, QTableWidgetItem('Product{}'.format(x)))
            self.tableWidget.setItem(x, 1, QTableWidgetItem('Description'))
            self.tableWidget.setCellWidget(x, 2, self.button)
            self.button.clicked.connect(
                lambda state, w=self.tableWidget.cellWidget(x,2), r=x, c=2: self.button_pushed(w, r, c)
            )
          
    def button_pushed(self, w, r, c): 
        if w.text() != "Likes/UnLikes":
            w.setIcon(QIcon(""))
            w.setText("Likes/UnLikes")
        else:
            w.setIcon(QIcon("D:/_Qt/img/heart.png"))
            w.setText(" Likes")
            
        w.setIconSize(QSize(100, 100))
        self.tableWidget.setCellWidget(r, c, w)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w   = MainWindow()
    w.resize(450, 350)
    w.show()
    sys.exit(app.exec_())

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


Update

А если по простому, с одной колонкой и одним рядком, без этого выбора мышкой ?

import sys
from PyQt5.Qt import *


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.tableWidget = QTableWidget(3, 3)
        self.tableWidget.setHorizontalHeaderLabels(['A', 'B', 'C'])
        vh = self.tableWidget.verticalHeader()
        vh.setDefaultSectionSize(100)
        hh = self.tableWidget.horizontalHeader()
        hh.setDefaultSectionSize(100)

        item = QTableWidgetItem()
        self.tableWidget.setItem(0, 0, item)
        item.setIcon(QIcon("im.png"))
        self.tableWidget.setIconSize(QSize(100, 100))

        self.setCentralWidget(self.tableWidget)        
        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    w   = MainWindow()
    w.resize(450, 350)
    w.show()
    sys.exit(app.exec_())

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

→ Ссылка