Я хочу отформатировать ячейку на основе значения в другой ячейке. Я использую QTableView, заполненный QAbstractModel, вместо Pandas Dataframe.
В основном, как показано ниже, если значение в ячейке в столбце 1 - «МЫ», я хотел бы отформатировать BackgroundRole в соответствующей ячейке в столбце 5.
Я очень признателен за любую помощь!
class StateModel(QtCore.QAbstractTableModel):
def __init__(self, imported_dataframe=pd.DataFrame()):
QtCore.QAbstractTableModel.__init__(self)
self._dataframe = imported_dataframe
def setDataFrame(self, imported_dataframe):
self.beginResetModel()
self._dataframe = imported_dataframe
self.endResetModel()
def rowCount(self, parent=None):
return self._dataframe.shape[0]
def columnCount(self, parent=None):
return self._dataframe.shape[1]
def data(self, index, role=QtCore.Qt.DisplayRole):
current_column = index.column()
current_row = index.row()
if index.isValid():
if role == QtCore.Qt.ForegroundRole:
if current_column == 1:
it = self._dataframe.iloc[index.row(), current_column]
if it == 'WE':
return QtGui.QBrush(QtCore.Qt.white)
if role == QtCore.Qt.BackgroundColorRole:
if current_column == 1:
it = self._dataframe.iloc[index.row(), current_column]
if it == 'WE':
return QtGui.QBrush(QtCore.Qt.blue)
if role == QtCore.Qt.FontRole:
table_font = QtGui.QFont('open sans', 12)
return table_font
if role == QtCore.Qt.DisplayRole:
return str(self._dataframe.iloc[index.row(), index.column()])
def headerData(self, col, orientation, role):
header_font = QtGui.QFont('open sans', 14, QtGui.QFont.Bold)
black_color = QtGui.QColor(QtCore.Qt.blue)
if orientation == QtCore.Qt.Horizontal:
if role == QtCore.Qt.DisplayRole:
return str(self._dataframe.columns[col])
if role == QtCore.Qt.FontRole:
return header_font