自定义ListItem包含彩色标签,彩色标签背景不显示?
Customize ListItem contains colorful label, colorful label background not show?
我自定义了QListView
和ListItem
,ListItem
有彩色标签,但是彩色标签不起作用?我找不到为什么QLabel
不显示是颜色。
演示代码
from qtpy.QtWidgets import *
from qtpy.QtCore import *
from qtpy.QtGui import *
class ListItem(QWidget):
def __init__(self, color, info):
super().__init__()
lay = QHBoxLayout()
self._colorLabel = QLabel()
self._info = QLabel(info)
lay.addWidget(self._colorLabel)
lay.addWidget(self._info)
self.setLayout(lay)
self._colorLabel.setAutoFillBackground(True)
self.setLabelColor(color)
def setLabelColor(self, color):
pal = self._colorLabel.palette()
pal.setColor(QPalette.Window, color)
self._colorLabel.setPalette(pal)
class ListWiget(QListWidget):
def _addItem(self, item):
tmpItem = QListWidgetItem()
tmpItem.setSizeHint(item.sizeHint())
self.addItem(tmpItem)
self.setItemWidget(tmpItem, item)
app = QApplication([])
listW = ListWiget()
item = ListItem(Qt.red, "red")
item2 = ListItem(Qt.blue, "blue")
listW._addItem((item2))
listW._addItem(item)
listW.show()
app.exec()
图片
它总是显示白色背景?
您必须使用 Base
而不是 Window
:
def setLabelColor(self, color):
pal = self._colorLabel.palette()
pal.setColor(QPalette.Base, color)
self._colorLabel.setPalette(pal)
我自定义了QListView
和ListItem
,ListItem
有彩色标签,但是彩色标签不起作用?我找不到为什么QLabel
不显示是颜色。
演示代码
from qtpy.QtWidgets import *
from qtpy.QtCore import *
from qtpy.QtGui import *
class ListItem(QWidget):
def __init__(self, color, info):
super().__init__()
lay = QHBoxLayout()
self._colorLabel = QLabel()
self._info = QLabel(info)
lay.addWidget(self._colorLabel)
lay.addWidget(self._info)
self.setLayout(lay)
self._colorLabel.setAutoFillBackground(True)
self.setLabelColor(color)
def setLabelColor(self, color):
pal = self._colorLabel.palette()
pal.setColor(QPalette.Window, color)
self._colorLabel.setPalette(pal)
class ListWiget(QListWidget):
def _addItem(self, item):
tmpItem = QListWidgetItem()
tmpItem.setSizeHint(item.sizeHint())
self.addItem(tmpItem)
self.setItemWidget(tmpItem, item)
app = QApplication([])
listW = ListWiget()
item = ListItem(Qt.red, "red")
item2 = ListItem(Qt.blue, "blue")
listW._addItem((item2))
listW._addItem(item)
listW.show()
app.exec()
图片
它总是显示白色背景?
您必须使用 Base
而不是 Window
:
def setLabelColor(self, color):
pal = self._colorLabel.palette()
pal.setColor(QPalette.Base, color)
self._colorLabel.setPalette(pal)