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_())


