gpt4 book ai didi

python - PyQt Qtableview 背景颜色基于文本值而不是 True 或 False

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:10 27 4
gpt4 key购买 nike

跟进 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) 隐藏测试列来复制所需的行为。

最佳答案

你应该检查 if role == Qt.BackgroundRole 中的条件

def data(self, item, role):
if role == Qt.BackgroundRole:
if QSqlQueryModel.data(self, self.index(item.row(), 2), Qt.DisplayRole) == "Young":
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)

enter image description here

关于python - PyQt Qtableview 背景颜色基于文本值而不是 True 或 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com