How to change Qtablewidget's specific cells background color in pyqt

前端 未结 2 988
耶瑟儿~
耶瑟儿~ 2021-01-02 05:04

I am new in pyqt4 and I can\'t figure out how to do this. I have a QtableWidget with data in it. I want to change some background color of the tableWidget\'s cells.

相关标签:
2条回答
  • 2021-01-02 05:56

    You must first create an item in that place in the table, before you can set its background color.

    self.tableWidget.setItem(3, 5, QtGui.QTableWidgetItem())
    self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150))
    
    0 讨论(0)
  • 2021-01-02 05:57
    import sys
    from PyQt4 import QtGui, QtCore
    
    lista = ['aa', 'ab', 'ac']
    listb = ['ba', 'bb', 'bc']
    listc = ['ca', 'cb', 'cc']
    mystruct = {'A':lista, 'B':listb, 'C':listc}
    
    class MyTable(QtGui.QTableWidget):
        def __init__(self, thestruct, *args):
            QtGui.QTableWidget.__init__(self, *args)
            self.data = thestruct
            self.setmydata()
    
        def setmydata(self):
            n = 0
            for key in self.data:
                m = 0
                for item in self.data[key]:
                    newitem = QtGui.QTableWidgetItem(item)
                    if key == 'A':
                        newitem.setBackground(QtGui.QColor(100,100,150))
                    elif key == 'B':
                        newitem.setBackground(QtGui.QColor(100,150,100))
                    else:
                        newitem.setBackground(QtGui.QColor(150,100,100))
                    self.setItem(m, n, newitem)
                    m += 1
                n += 1
    
    def main(args):
        app = QtGui.QApplication(args)
        table = MyTable(mystruct, 5, 3)
        table.show()
        sys.exit(app.exec_())
    
    if __name__=="__main__":
        main(sys.argv)
    

    Slightly Modifiled version of http://www.saltycrane.com/blog/2006/10/qtablewidget-example-using-python-24/

    0 讨论(0)
提交回复
热议问题