pyqt4:QListWidget:如何为不同的项目动态设置不同的文本和背景颜色

pyqt4: QListWidget: How to set different text and background colors to different items dynamically

我是 PyQt 新手。我想设计一个列表,该列表将显示具有不同背景和文本颜色的不同项目。我可以将项目添加到我的列表中,但无法将它们配置为设置不同的颜色。

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(786, 552)
        self.mylist = QtGui.QListWidget(self.centralwidget)
        self.mylist.setObjectName(_fromUtf8("mylist"))


        self.mylist.addItem("item1")


        self.mylist.addItem("item2")

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

我的上述代码已添加到 mylist 中名为 item1 和 item2 的项目。我想将背景颜色和文本颜色设置为 item1 蓝色和白色,以及 item2 红色和黑色。我该怎么做?

QListWidgetItem class 有 setBackground():

QListWidgetItem.setBackground(your_color)

你的情况:

self.mylist.item(0).setBackground(QtCore.Qt.blue)
# self.mylist.item(0).setBackground(QtGui.QColor("blue"))
# self.mylist.item(0).setBackground(QtGui.QColor(0, 0, 255))
self.mylist.item(1).setBackground(QtCore.Qt.white)
# self.mylist.item(1).setBackground(QtGui.QColor("white"))
# self.mylist.item(1).setBackground(QtGui.QColor(255, 255, 255))

如果您想更改字体颜色,请使用名为 setForeground

的 属性

self.mylist.item(0).setForeground(QtCore.Qt.blue)

这会将项目 0 的字体颜色更改为蓝色