python - 在 PyQt 中更改 ComboBox 的背景颜色
问题描述
我正在尝试更改组合框背景的颜色。我希望它是白色的,但我不能让它有任何不同于灰色的颜色。上图是我得到的,下图是我想要的。
这是我的代码:
from PyQt5 import QtWidgets, QtGui
class combodemo(QtWidgets.QWidget):
def __init__(self, parent = None):
super(combodemo, self).__init__(parent)
layout = QtWidgets.QHBoxLayout()
self.cb = QtWidgets.QComboBox()
self.cb.addItem("1")
self.cb.addItem("2")
pal = self.cb.palette()
pal.setColor(self.cb.backgroundRole(),QtGui.QColor(255,255,255))
self.cb.setPalette(pal)
self.cb.setAutoFillBackground(True)
layout.addWidget(self.cb)
self.setLayout(layout)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
ex = combodemo()
ex.show()
app.exec_()
解决方案
您必须更改QPalette::Button
角色的颜色:
from PyQt5 import QtWidgets, QtGui
class combodemo(QtWidgets.QWidget):
def __init__(self, parent = None):
super(combodemo, self).__init__(parent)
layout = QtWidgets.QHBoxLayout(self)
self.cb = QtWidgets.QComboBox()
self.cb.addItems(["1", "2"])
pal = self.cb.palette()
pal.setColor(QtGui.QPalette.Button, QtGui.QColor(255,255,255))
self.cb.setPalette(pal)
layout.addWidget(self.cb)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
ex = combodemo()
ex.show()
sys.exit(app.exec_())
在 Windows 中,您需要:
app.setStyle("fusion")
推荐阅读
- c# - 针对(数据)对象上用户定义的基于条件的操作的设计
- python - VPython 脚本的输出是什么?为什么它会在 Chrome 中为我打开?
- php - 从公用文件夹中获取图像
- spring-boot - 更新到格林威治后 Spring Stream 的集成测试失败
- javascript - 将多个变量合二为一
- javascript - 使用 SpringBoot 的 Whitelabel 错误错误页面
- c# - 获取具有特定属性的属性(即时编译)
- jquery - 使用 Ajax 动态更改 Bootstrap 4 弹出框的内容
- java - Zuul 是我的应用程序的唯一入口点吗?
- mysql - 检查字段是否存在且不为空