python - 更改 QTableWidgetItem 背景颜色

标签 python qt pyqt

我正在尝试更改 QTableWidgetItem 的背景颜色。还有其他一些关于同一件事的帖子,但没有一个给定的解决方案对我有用。

对于每一行,我一个一个地创建 QTableWidgetItems,然后使用 setItem 将其分配给当前行的单元格。

我试图在创建它们之后立即更改颜色:

  1. self.myTable.myItem1.setBackgroundColor(QtGui.QColor(255,100,0,255))
  2. self.myTable.myItem1.setBackground(QtGui.QColor(255,100,0,255))
  3. self.myTable.myItem1.setData(Qt.BackgroundRole,QtGui.QColor(255,100,0,255))

但这些解决方案对我来说毫无用处。 有什么我想念的吗?

欢迎任何帮助

最佳答案

您必须设置项目 的背景颜色。有几种方法可以做到这一点(完整的脚本在下面):

  • 选项 1:设置项目的背景,然后将项目添加到表格。

在此示例中,我们将 item1 设置为将“row1”作为内容。如果这是偶数行,我们将背景设置为浅红色/粉红色。

item1 = QtGui.QTableWidgetItem('row1')
if row % 2 == 0:
    item1.setBackground(QtGui.QColor(255, 128, 128))
self.table.setItem(row,0,item1)
  • 选项 2:为表格中已有的项目设置背景。这就需要你直接对item进行操作。

在此示例中,我们将第 1 行第 0 列项目的背景设置为浅灰色:

self.table.item(1,0).setBackground(QtGui.QColor(125,125,125))

完整的脚本,同时显示红色和灰色高亮显示在这里:

from PyQt4 import QtCore
from PyQt4 import QtGui 
import sys

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self,parent)
        self.table = QtGui.QTableWidget()
        self.table.setColumnCount(2)
        self.setCentralWidget(self.table)
        data1 = ['row1','row2','row3','row4']
        data2 = ['1','2.0','3.00000001','3.9999999']

        self.table.setRowCount(4)

        for row in range(4):
            item1 = QtGui.QTableWidgetItem(data1[row])
            if row % 2 == 0:
                item1.setBackground(QtGui.QColor(255, 128, 128))
            self.table.setItem(row,0,item1)

        self.table.item(1,0).setBackground(QtGui.QColor(125,125,125))


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

输出:

Example output showing two methods of highlighting background

关于python - 更改 QTableWidgetItem 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30374198/

相关文章:

python - 随机分割数据帧(取决于唯一值)

c++ - 获取 QOpenGLFramebufferObject 抗锯齿纹理的替代方法,而不是多重采样 + blitting

python - PyQT - 定位和显示自定义小部件

python - PySide QTreeWidget clear() 导致崩溃

python - 将 CSV 表转换为 Redis 数据结构

python - 如何在 python 2.7 中将用户输入转换为字符串

python - 计算两个字符串之间的单词数python regexp

Android - 使用 QFile 打开文件

java - 多个单词的 QCompleter 和 QLineEdit

python - 如何在 PyQt5 中嵌入表格