0
跟進到my general question,其中@eyllanesc已經好心回答了我的問題。PyQt Tableview基於文本值而不是True或False的背景顏色
出於好奇,我試着改變代碼來檢查字符串而不是1,所有的行都變成了灰色。
從@eyllanesc原始代碼:
def data(self, item, role):
if role == Qt.BackgroundRole:
if QSqlQueryModel.data(self, self.index(item.row(), 3), Qt.DisplayRole):
return QBrush(Qt.yellow)
if role == Qt.DisplayRole:
if item.column() == 3:
return True if QSqlQueryModel.data(self, item, Qt.DisplayRole) == 1 else False
return QSqlQueryModel.data(self, item, role)
如果我將其更改爲
def data(self, item, role):
if role == Qt.BackgroundRole:
if QSqlQueryModel.data(self, self.index(item.row(), 2), Qt.DisplayRole):
return QBrush(Qt.yellow)
if role == Qt.DisplayRole:
if item.column() == 2:
return True if QSqlQueryModel.data(self, item, Qt.DisplayRole) == 'Young' else False
return QSqlQueryModel.data(self, item, role)
那麼所有的行變黃。
什麼給?任何人都可以幫助我理解?
N.B.我知道一個非空的python字符串將相當於真正的
N.B.通過向SQL查詢中添加另一列(使用CASE WHEN等),然後使用setColumnHidden(col,True)隱藏測試列,我可以複製所需的行爲。
是要繪製的列中的數據的情況? – eyllanesc
繼續你寫的例子,假設我想測試'lastname ==「年輕」 – Alan