PyQt5 - QTableWidgetItem set background color qss error

46 views Asked by At

File: untitled.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(1218, 418)
        self.gridLayout = QtWidgets.QGridLayout(Dialog)
        self.gridLayout.setObjectName("gridLayout")
        self.review_table = QtWidgets.QTableWidget(Dialog)
        self.review_table.setMinimumSize(QtCore.QSize(0, 400))
        self.review_table.setStyleSheet("QTableWidget{border:1px solid #ABABAB;}")
        self.review_table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        self.review_table.setAlternatingRowColors(True)
        self.review_table.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
        self.review_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
        self.review_table.setRowCount(2)
        self.review_table.setObjectName("review_table")
        self.review_table.setColumnCount(4)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.review_table.setItem(1, 3, item)
        self.review_table.horizontalHeader().setCascadingSectionResizes(False)
        self.review_table.horizontalHeader().setHighlightSections(False)
        self.review_table.horizontalHeader().setMinimumSectionSize(260)
        self.review_table.horizontalHeader().setSortIndicatorShown(False)
        self.review_table.horizontalHeader().setStretchLastSection(True)
        self.review_table.verticalHeader().setHighlightSections(False)
        self.gridLayout.addWidget(self.review_table, 0, 0, 1, 1)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.review_table.setSortingEnabled(False)
        item = self.review_table.verticalHeaderItem(0)
        item.setText(_translate("Dialog", "New Row"))
        item = self.review_table.verticalHeaderItem(1)
        item.setText(_translate("Dialog", "2"))
        item = self.review_table.horizontalHeaderItem(0)
        item.setText(_translate("Dialog", "Ημερομηνία"))
        item = self.review_table.horizontalHeaderItem(1)
        item.setText(_translate("Dialog", "Τύπος"))
        item = self.review_table.horizontalHeaderItem(2)
        item.setText(_translate("Dialog", "Τίτλος"))
        item = self.review_table.horizontalHeaderItem(3)
        item.setText(_translate("Dialog", "Διάρκεια"))
        __sortingEnabled = self.review_table.isSortingEnabled()
        self.review_table.setSortingEnabled(False)
        item = self.review_table.item(0, 0)
        item.setText(_translate("Dialog", "X"))
        item = self.review_table.item(0, 1)
        item.setText(_translate("Dialog", "X"))
        item = self.review_table.item(0, 2)
        item.setText(_translate("Dialog", "X"))
        item = self.review_table.item(0, 3)
        item.setText(_translate("Dialog", "X"))
        item = self.review_table.item(1, 0)
        item.setText(_translate("Dialog", "1"))
        item = self.review_table.item(1, 1)
        item.setText(_translate("Dialog", "1"))
        item = self.review_table.item(1, 2)
        item.setText(_translate("Dialog", "1"))
        item = self.review_table.item(1, 3)
        item.setText(_translate("Dialog", "1"))
        self.review_table.setSortingEnabled(__sortingEnabled)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

File test_123.py

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from untitled import *

class Run_Me:
    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)
        self.Dialog = QtWidgets.QDialog()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self.Dialog)
        self.Dialog.show()
        
        #try to comment this line and the red row background color will appear.
        self.ui.review_table.setStyleSheet("QTableWidget::item {border: 0px;}")    
        
        #set red background row at first row
        backgroundBrush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
        for j in range(self.ui.review_table.columnCount()):
            self.ui.review_table.item(0, j).setBackground(backgroundBrush)
        
        sys.exit(self.app.exec_())


program = Run_Me()

Output:

enter image description here

If i comment this line in test_123.py

#try to comment this line and the red row background color will appear.
#self.ui.review_table.setStyleSheet("QTableWidget::item {border: 0px;}")       

then the output it's correct: enter image description here

What's wrong with this stylesheet?

Edit: Possible duplicate

0

There are 0 answers