我在PySide2中有一个QListWidget,我想为所选项目使用不同的颜色。这可能吗?我将包括2张图片进行演示。

我目前所拥有的:
python - QListWidget项目不同颜色的突出显示的项目-LMLPHP

这就是我想要的:

python - QListWidget项目不同颜色的突出显示的项目-LMLPHP

最佳答案

您必须使用委托并重写QStyleOptionViewItem的QPalette。在下面的示例中,突出显示颜色取决于它是否是偶数行。

from PySide2 import QtCore, QtGui, QtWidgets
import random


class HighlightedDelegate(QtWidgets.QStyledItemDelegate):
    def initStyleOption(self, option, index):
        super(HighlightedDelegate, self).initStyleOption(option, index)
        # highlight color
        color = (
            QtGui.QColor("gray")
            if index.row() % 2 == 0
            else QtGui.QColor("salmon")
        )
        option.palette.setColor(
            QtGui.QPalette.Normal, QtGui.QPalette.Highlight, color
        )


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)

    w = QtWidgets.QListWidget(
        selectionMode=QtWidgets.QAbstractItemView.MultiSelection
    )
    delegate = HighlightedDelegate(w)
    w.setItemDelegate(delegate)
    for i in range(100):
        it = QtWidgets.QListWidgetItem("item-{}".format(i))
        w.addItem(it)
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())


python - QListWidget项目不同颜色的突出显示的项目-LMLPHP

关于python - QListWidget项目不同颜色的突出显示的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56214108/

10-13 08:21
查看更多