【发布时间】:2017-10-22 14:26:25
【问题描述】:
关注my general question,@eyllanesc 已经回答了我的问题。
出于好奇,我尝试更改代码以检查字符串而不是 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)
然后所有的行都变黄了。
什么给了?有人能帮我理解吗?
注意我知道一个非空的 python 字符串将等同于 True
注意我可以通过向 SQL 查询添加另一列(使用 CASE WHEN 等)然后使用 setColumnHidden(col, True) 隐藏测试列来复制所需的行为。
【问题讨论】:
-
你要绘制哪一列的数据?
-
继续你写的例子,假设我想测试
lastname == "Young"
标签: python qt pyqt pyqt4 pyqt5