如何在pyqt中更改Qtablewidget的特定单元格背景颜色
Posted
技术标签:
【中文标题】如何在pyqt中更改Qtablewidget的特定单元格背景颜色【英文标题】:How to change Qtablewidget's specific cells background color in pyqt 【发布时间】:2013-09-24 04:53:04 【问题描述】:我是 pyqt4 的新手,我不知道该怎么做。我有一个 QtableWidget,里面有数据。我想更改 tableWidget 单元格的一些背景颜色。
我试过self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150))
,它返回这个错误:
AttributeError: 'NoneType' 对象没有属性 'setBackground'
我该怎么办?
【问题讨论】:
我自己对pyqt4并不熟悉,但也许你可以添加一个SSCCE?这可能会让其他人更容易重现您的问题。 【参考方案1】:您必须先在表格的该位置创建一个项目,然后才能设置其背景颜色。
self.tableWidget.setItem(3, 5, QtGui.QTableWidgetItem())
self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150))
【讨论】:
在 PyQt5 中的工作方式仍然相同。【参考方案2】:import sys
from PyQt4 import QtGui, QtCore
lista = ['aa', 'ab', 'ac']
listb = ['ba', 'bb', 'bc']
listc = ['ca', 'cb', 'cc']
mystruct = 'A':lista, 'B':listb, 'C':listc
class MyTable(QtGui.QTableWidget):
def __init__(self, thestruct, *args):
QtGui.QTableWidget.__init__(self, *args)
self.data = thestruct
self.setmydata()
def setmydata(self):
n = 0
for key in self.data:
m = 0
for item in self.data[key]:
newitem = QtGui.QTableWidgetItem(item)
if key == 'A':
newitem.setBackground(QtGui.QColor(100,100,150))
elif key == 'B':
newitem.setBackground(QtGui.QColor(100,150,100))
else:
newitem.setBackground(QtGui.QColor(150,100,100))
self.setItem(m, n, newitem)
m += 1
n += 1
def main(args):
app = QtGui.QApplication(args)
table = MyTable(mystruct, 5, 3)
table.show()
sys.exit(app.exec_())
if __name__=="__main__":
main(sys.argv)
http://www.saltycrane.com/blog/2006/10/qtablewidget-example-using-python-24/的略微修改版
【讨论】:
对于一个小问题来说,这个例子太复杂了以上是关于如何在pyqt中更改Qtablewidget的特定单元格背景颜色的主要内容,如果未能解决你的问题,请参考以下文章
单击qTableWidget pyqt5中的特定单元格后,特定单元格的背景颜色没有改变
如何使用 PYQT5 使 QTableWidget 单元格只读?
使用 Python pyqt4 获取 QTableWidget 中特定行和列的单元格突出显示
使用 PyQt/PySide 禁用 QTableWidget 中特定列中的排序箭头
如何从 QComboBox 中获取所选项目以显示在 PyQt5 的 QTableWidget 中? (QComboBox 有复选框来选择项目)