2013-09-19 23 views
7

Я новичок в pyqt4, и я не могу понять, как это сделать. У меня есть QtableWidget с данными в нем. Я хочу изменить цвет фона в ячейках tableWidget.Как изменить цветные свойства ячейки Qtablewidget в pyqt

Я попытался self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150)) и возвращает эту ошибку:

AttributeError: 'NoneType' object has no attribute 'setBackground'

Что я должен делать?

+0

Я сам не знаком с pyqt4, но, возможно, вы могли бы добавить [SSCCE] (http://sscce.org)? Это может облегчить другим воспроизведение вашей проблемы. –

ответ

19

Вы должны сначала создать элемент в этом месте в таблице, прежде чем вы можете установить цвет фона.

self.tableWidget.setItem(3, 5, QtGui.QTableWidgetItem()) 
self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150)) 
0
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) 

Слегка Modifiled версия http://www.saltycrane.com/blog/2006/10/qtablewidget-example-using-python-24/

+0

Это слишком сложный пример для крошечной проблемы – user1767754

Смежные вопросы