Изменение цвета строк QTableWidget PyQt5

Мне нужно выделить рандомными цветами топ 5 самых дорогих товаров взятых из файла price.csv и по нажатию кнопки обновить цвета. Так же программа умеет высчитыввать общую сумму чека. Я выполнил основную часть кода, но не могу реализовать раскраску tableWidget разными цветами.
Уменя есть Hex рандомизатор

def r_hex():
    r = lambda: randint(0, 255)
    return '#%02X%02X%02X' % (r(), r(), r())

Но у меня не выходит вставить результат его выполнения в setStyleSheet и применить его к каждой строке

self.setStyleSheet("""
                QTableWidget {
                    background-color: #55FF77;  
                    color: blue;             
                }
            """)

Внизу весь код не считая ui и пример того как должно работать

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

import csv
import sys
from random import randint
from PyQt5 import uic
from PyQt5.QtWidgets import QMainWindow, QApplication, QTableWidgetItem


def r_hex():
    r = lambda: randint(0, 255)
    return '#%02X%02X%02X' % (r(), r(), r())

class Bill(QMainWindow):
    def __init__(self):
        super().__init__()
        uic.loadUi("untitled.ui", self)
        self.prise_list = {}

    self.initUI()

def initUI(self):
    self.setWindowTitle('Интерактивный чек')
    self.FullFill()
    self.tableWidget.itemChanged.connect(self.UpDate)
    self.btn.clicked.connect(self.Repaint)


def FullFill(self):
    with open('price.csv', encoding="utf8") as csvfile:
        reader = csv.reader(csvfile, delimiter=';', quotechar='"')
        next(reader)
        for index, row in enumerate(reader):
            self.prise_list[row[0]] = int(row[1])
    # Сортирую от большего к меньшему словарь prise_list по его значениям 
    self.prise_list = {k: v for k, v in sorted(self.prise_list.items(), key=lambda item: item[1], reverse=True)}

    # Устанавливаю столько строк в таблице сколько есть элементов в списке
    self.tableWidget.setRowCount(len(self.prise_list))

    # Заполняю 1 столбец названием товаров
    [self.tableWidget.setItem(n, 0, QTableWidgetItem(item))
     for n, item in enumerate(self.prise_list)]

    # 2 столбец ценами
    [self.tableWidget.setItem(n, 1, QTableWidgetItem(str(item)))
     for n, item in enumerate(self.prise_list.values())]

    # третий колтчесво куплинного тавара (там 0)
    [self.tableWidget.setItem(n, 2, QTableWidgetItem("0"))
     for n in range(len(self.prise_list))]
    # составляю цвет 
    self.setStyleSheet("""
                QTableWidget {
                    background-color: #55FF77;  
                    color: blue;             
                }
            """)

def UpDate(self):
    # Рассчитываю сумму к оплате
    try:
            total = sum([int(self.tableWidget.item(i, 1).text()) * int(self.tableWidget.item(i, 2).text())
                     for i in range(len(self.prise_list))])
        except Exception:
            total = "Error"
            
        # Показываю сумму 
        self.bill.setText(str(total))

    def Repaint(self):
        # Обновляю виджет по ножатию кнопки
        self.repaint()
        


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyle("Fusion")
    ex = Bill()
    ex.show()
    sys.exit(app.exec())

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

Автор решения: gil9red

Цвет заднего фона можно устанавливать индивидуально через метод setBackground, достаточно перебрать первые 5 строк таблицы и установить цвет заднего фона у ячеек

Пример:

from PyQt5.QtGui import QColor

...

    for row in range(5):
        rowColor = QColor(r_hex())

        for col in range(self.tableWidget.columnCount()):
            item = self.tableWidget.item(row, col)
            item.setBackground(rowColor)
→ Ссылка