pyqt – изменение row ~ cell collor в TableView

У меня есть QTableView с тремя столбцами. Второй столбец относится к числам, существует только три типа: 1, -1 и 0. Я хочу иметь разные цвета для этих трех «типов» чисел (1, -1,0), окрашивая их ряды разными цветами. Как мне это сделать?

self.tableView = QTableView(self.tabSentimento) self.tableView.setGeometry(QRect(550,10,510,700)) self.tableView.setObjectName(_fromUtf8("TabelaSentimento")) self.tableView.setModel(self.model) self.tableView.horizontalHeader().setStretchLastSection(True) 

obs: Я использовал этот horizontalheader().setStrechLastSection(True) потому что я открыл существующий файл csv (используя кнопку) в моем представлении таблицы.

One Solution collect form web for “pyqt – изменение row ~ cell collor в TableView”

Вы должны определить цвет в модели, а не в представлении:

 def data(self, index, role): ... if role == Qt.BackgroundRole: return QBrush(Qt.yellow) 

Изменить: Вот рабочий пример, за исключением того, что часть цвета полностью украдена с http://www.saltycrane.com/blog/2007/06/pyqt-42-qabstracttablemodelqtableview/

 from PyQt4.QtCore import * from PyQt4.QtCore import * from PyQt4.QtGui import * import sys my_array = [['00','01','02'], ['10','11','12'], ['20','21','22']] def main(): app = QApplication(sys.argv) w = MyWindow() w.show() sys.exit(app.exec_()) class MyWindow(QTableView): def __init__(self, *args): QTableView.__init__(self, *args) tablemodel = MyTableModel(my_array, self) self.setModel(tablemodel) class MyTableModel(QAbstractTableModel): def __init__(self, datain, parent=None, *args): QAbstractTableModel.__init__(self, parent, *args) self.arraydata = datain def rowCount(self, parent): return len(self.arraydata) def columnCount(self, parent): return len(self.arraydata[0]) def data(self, index, role): if not index.isValid(): return QVariant() # vvvv this is the magic part elif role == Qt.BackgroundRole: if index.row() % 2 == 0: return QBrush(Qt.yellow) else: return QBrush(Qt.red) # ^^^^ this is the magic part elif role != Qt.DisplayRole: return QVariant() return QVariant(self.arraydata[index.row()][index.column()]) if __name__ == "__main__": main() 
  • Настройка пункта меню меню меню приложения Mac OSX, отличного от «Python» в моем приложении Qt python
  • Где я могу найти QWebPage и pymongo в python3.4?
  • Как загрузить детей из файла .ui в PySide?
  • Как создать программу установки Windows для проекта pyqt
  • PyQt5: как заставить QThread возвращать данные в основной поток
  • Показать строковые значения по оси x в pyqtgraph
  • Где pyside-uic?
  • Подключаемая программа Python
  • Python - лучший язык программирования в мире.