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. 비어 있지 않은 파이썬 문자열이 True와 동일하다는 것을 알고 있습니다.
N.B. 나는 CASE WHEN 등을 사용하여 SQL 쿼리에 다른 열을 추가 한 다음 setColumnHidden (col, True)을 사용하여 테스트 열을 숨김으로써 원하는 동작을 복제 할 수 있습니다.
if role == Qt.BackgroundRole
내부의 상태를 확인해야합니까? – eyllanesc당신이 쓴 예제를 계속해서, 내가'lastname == "Young"' – Alan