如何在 PyQt 中更改 QCombobox 高亮颜色

How to change the QCombobox highlight colour in PyQt

我无法在 PyQt 中更改 QCombobox 的突出显示颜色。我已经设法改变了实际输入框的突出显示颜色,但是当下拉列表出现时它仍然是蓝色的。下图显示了到底发生了什么。调色板方法适用于 Linux 但不适用于 Windows (我目前正在使用的)。 我使用了 PyQt 调色板:

    brush = QtGui.QBrush(QtGui.QColor(168, 168, 168))
    brush.setStyle(QtCore.Qt.SolidPattern)
    palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
    self.comboBox_7.setPalette(palette)

这里我设法将高亮颜色更改为实际框的灰色:

但这里的下拉突出显示仍然是蓝色的:

感谢所有帮助。

根据 Qt docs,调色板在某些平台上可能并不总是有效:

Warning: Some styles do not use the palette for all drawing, for instance, if they make use of native theme engines. This is the case for both the Windows XP, Windows Vista, and the macOS styles.

Qt Style Sheets Overview 建议样式表应该在调色板不起作用的地方起作用。除了 Linux,我自己无法在其他任何东西上进行测试,但以下似乎可以正常工作:

from PyQt5 import QtWidgets
app = QtWidgets.QApplication([''])
combo = QtWidgets.QComboBox()
combo.addItems('One Two Three'.split())
combo.setStyleSheet('selection-background-color: rgb(168,168,168)')
combo.show()
app.exec_()

我想补充一点,尽管为 QComboBox 设置“selection-background-color”看起来很明显,但这个 属性 实际上属于 QWidget。所以如果你需要明确,你可以这样做 combo.setStyleSheet('QWidget{selection-background-color: rgb(168,168,168);}')