Настроить ListItem содержит красочную метку, цветной фон метки не отображается?

Я настраиваю 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()

Картина
Всегда показывает белый фон?
enter image description here

Если добавление таблицы стилей self._colorLabel.setStyleSheet("QLabel {background:yellow;}") будет работать, я также хочу, чтобы метод публикации работал.

jie 17.05.2022 10:22
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
1
14
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны использовать Base вместо Window:

def setLabelColor(self, color):
    pal = self._colorLabel.palette()
    pal.setColor(QPalette.Base, color)
    self._colorLabel.setPalette(pal)

Или, в качестве альтернативы, явно установите фоновую роль, чтобы избежать использования родительского переопределения из представления: self._colorLabel.setBackgroundRole(QPalette.Window)

musicamante 17.05.2022 11:17

Теперь для решения этой проблемы есть 3 метода. Большое вам спасибо.

jie 18.05.2022 03:10

Другие вопросы по теме