Python pyqt-更改TableView中的行~单元格颜色
我有一个三列的QTableView 第二列是关于数字的,只有三种类型:1、-1和0。 我希望这三种“类型”的数字(1,-1,0)有不同的颜色,用不同的颜色给它们的行着色。我怎么做Python pyqt-更改TableView中的行~单元格颜色,python,qt,pyqt4,tableview,background-color,Python,Qt,Pyqt4,Tableview,Background Color,我有一个三列的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 = 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)
,因为我在我的tableview中打开了一个现有的csv文件(使用按钮)。您必须在模型中定义颜色,而不是在视图中定义颜色:
def data(self, index, role):
...
if role == Qt.BackgroundRole:
return QBrush(Qt.yellow)
编辑:
这里有一个工作示例,除了颜色部分完全从
首先,谢谢你。但是,你能给我举个例子吗?比如创建一个具有两条不同颜色的线的tableview?我正在尝试,但我从来没有做过这样的事情。我还有一个关于颜色的问题,但现在使用一个按钮,用现有数据给表格着色。
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()