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

时间:2017-10-08 10:39:49

标签: python-3.x user-interface pyqt5 qpalette

我无法在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)

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

image1

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

image2

所有人都很感激。

2 个答案:

答案 0 :(得分:1)

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

  

警告:某些样式不会将调色板用于所有绘图   例如,如果他们使用本机主题引擎。情况就是这样   适用于Windows XP,Windows Vista和macOS样式。

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_()

答案 1 :(得分:0)

我想补充一点,尽管为 QComboBox 设置“选择背景颜色”似乎很明显,但该属性实际上属于 QWidget。所以如果你需要明确,你可以做这样的事情combo.setStyleSheet('QWidget{selection-background-color: rgb(168,168,168);}')