【问题标题】:How to change the QCombobox highlight colour in PyQt如何在 PyQt 中更改 QCombobox 突出显示颜色
【发布时间】:2018-03-19 16:49:23
【问题描述】:

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

在这里,我设法将实际框的突出显示颜色更改为灰色:

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

感谢所有帮助。

【问题讨论】:

  • 调色板不会就地改变东西,所以你需要使用setPalette(palette)
  • @ekhumoro 对不起,这已经完成了,它仍然没有改变颜色,只有框的突出显示颜色(第一张图片)。将更新有问题的代码。
  • 在 linux 上对我来说很好用。如果您在 windows 或 osx 上,有时会忽略调色板。您可能需要使用样式表。
  • @ekhumoro 一定是这样。我将如何使用样式表进行更改?我知道如何编辑样式表只是不确定如何编辑突出显示颜色。干杯

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 之前试过了,可惜没有解决问题。
    • @Kermit。您的意思是它不适用于您自己的代码,还是我在答案中显示的代码不起作用?
    • @ekhumuro 我的意思是在组合框的样式表中添加“selection-background-color: rgb(168,168,168)”不起作用。
    • @Kermit。您能否运行我更新的答案中显示的示例脚本,并确认它不起作用?
    • @ekhumuro 奇怪,您的确切代码现在适用于特定的组合框。我将不得不以某种方式编辑我的代码。现在这回答了我的问题,干杯
    猜你喜欢
    • 2014-02-21
    • 2020-11-04
    • 1970-01-01
    • 2010-12-12
    • 2012-12-17
    • 1970-01-01
    • 2012-03-27
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多