Как поменять стиль отдельного элемента QTableWidget в PyQt?
Необходимо поменять цвет заднего фона в ячейке (1, 1) (либо любой другой) по ходу программы, если цвет фона остальных ячеек задаётся через app.setStyleSheet(STYLE_SHEET). Приветствуются любые методы:
редактирование самого STYLE_SHEET (так, чтобы остальные ячейки не менялись), добавление кода, переход на PyQt6, ...).
Методы item.setBackground и item.setData работают только если отключить app.setStyleSheet(STYLE_SHEET).
from PyQt5 import QtWidgets, QtCore, QtGui
class Table(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# Создание таблицы
table = QtWidgets.QTableWidget()
table.setRowCount(4)
table.setColumnCount(2)
table.setAlternatingRowColors(True)
table.setItem(0, 0, QtWidgets.QTableWidgetItem("00"))
table.setItem(0, 1, QtWidgets.QTableWidgetItem("01"))
table.setItem(1, 0, QtWidgets.QTableWidgetItem("10"))
table.setItem(1, 1, QtWidgets.QTableWidgetItem("11"))
self.setCentralWidget(table)
self.show()
# установка цвета фона для элемента (1, 1)
item = table.item(1, 1)
item.setBackground(QtGui.QColor(255, 0, 0)) # не работает
item.setData(QtCore.Qt.BackgroundRole, QtGui.QColor(255, 0, 0)) # тоже не работает
STYLE_SHEET = '''
QTableWidget::item {
color: red;
background-color: #DFD0CA;
}
QTableWidget::item:alternate {
color: red;
background-color: #DFE0CA;
}
QTableWidget::item:selected {
selection-color: blue;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0.5, y2: 0.5, stop: 0 #FF92BB, stop: 1 white);
}
'''
if __name__ == '__main__':
app = QtWidgets.QApplication([])
app.setStyleSheet(STYLE_SHEET)
ex = Table()
app.exec()