【发布时间】:2018-06-30 23:11:26
【问题描述】:
我正在尝试根据从 Sqlite 数据库加载的数据中的某个值设置 TableWidget 的背景颜色,如下例所示。我在PyQt Tableview background color based on text value rather than True or False 中看到了下面的答案,它有效。
问题是,在我的设置中,我使用 TableWidget 和一个按钮(我使用 Qt Designer)从 Sqlite 数据库加载数据,我不太确定如何在我的设置中实现以下代码,因为我不完全了解它是如何工作的:
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)
下面是我选择 Sqlite 数据并将其显示到 TableWidget 的代码。我正在使用 PyQT4 , Pyhton 2.7 。
self.load_btn.clicked.connect(self.loadData)
def loadData(self):
##DB Connection ###
cursor = conn.cursor()
query = "SELECT * FROM Tadata"
cursor.execute(query)
results = cursor.fetchall()
self.tableWidget.setRowCount(0)
for row_number, row_data in enumerate(results):
self.tableWidget.insertRow(row_number)
for column_number, data in enumerate (row_data):
self.tableWidget.setItem(row_number,column_number,QtGui.QTableWidgetItem(str(data)))
使用的数据库是 sqlite 。 4 行 4 列。列标题:编号、公司、设备、状态。 '状态' 记录包括 'YES' 或 'NO' 。所以无论“否”是什么,我都希望背景是红色的
我在数据库中的表
基于特定值的tableview颜色
【问题讨论】:
-
这个方法只对QTableView有效,QTableWidget不能建立新的模型,你的情况需要你告诉我你的表在数据库里怎么样
-
@eyllanesc 感谢您的及时回复。
-
@eyllanesc 感谢您的提示回复!使用的数据库是 sqlite 。 4 行 4 列。列标题:编号、公司、设备、状态。 '状态' 记录包括 'YES' 或 'NO' 。所以无论“否”是什么,我都希望背景是红色的。
-
编辑您的问题并将其添加到那里
-
检查我的解决方案,我推荐使用选项 2,它更通用。
标签: python python-2.7 pyqt pyqt4 qtablewidget