개발/Python

pyqt에서 Qtablewidget의 특정 셀 배경색을 변경하는 방법

MinorMan 2021. 1. 7. 07:47
반응형

<질문>

나는 pyqt4의 새로운 기능이며 이것을 수행하는 방법을 알 수 없습니다. 데이터가있는 QtableWidget이 있습니다. tableWidget 셀의 배경색을 변경하고 싶습니다.

나는 시도했다

self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150))

다음 오류를 반환합니다.

AttributeError : 'NoneType'개체에 'setBackground'속성이 없습니다.

어떻게해야합니까?


<답변1>

배경색을 설정하기 전에 먼저 표의 해당 위치에 항목을 만들어야합니다.

self.tableWidget.setItem(3, 5, QtGui.QTableWidgetItem())
self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150))

<답변2>

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)

약간 수정 된 버전

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

반응형