PyQt: сбросить или удалить цвет фона из QTreeWidgetItem
Как удалить фоновый цвет QTreeWidgetItem
или сбросить его по умолчанию?
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
- Условно изменить цвет фона определенных ячеек
- Извлечение матрицы matplotlib в шестнадцатеричном формате
- PIL Лучший способ заменить цвет?
- Изменить цвет отдельной строки печати в Python 3.2?
- Изменение цвета RGB в анимации matplotlib
Вы можете получить цвет фона с помощью этого:
treeWidgetItem.background(0)
возвращая что-то вроде:
<PySide.QtGui.QBrush(QColor(ARGB 1, 0, 0, 0) , NoBrush ) at 0x00000000EB1F6588>
Теперь поставьте это в строку, прежде чем применять изменения, и у вас есть ответ.
originalBG = treeWidgetItem.background(0) # New background treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green')) # Old background treeWidgetItem.setBackgroundColor(0, originalBG)
Я не уверен, есть ли способ сделать это с помощью setBackgroundColor
, но я бы использовал setStyleSheet
.
Работа стилей с каждым QtGui
и более простая в использовании.
Если вы хотите установить QTreeWidget
фона QTreeWidget
в зеленый цвет:
self.TreeWidgetItem = QtGui.QTreeWidgetItem() self.TreeWidgetItem.setStyleSheet("background-color: green;")
Если вы хотите сбросить таблицу стилей QTreeWidget, просто введите это:
self.TreeWidgetItem.setStyleSheet("")
Это приведет к сбросу любого цвета виджета по умолчанию, без каких-либо исключений.
Также хорошей практикой является использование системы таблицы qt, она проста и имеет много преимуществ.
Значение по умолчанию может зависеть от ОС и других факторов.
Поскольку вы изменили цвет фона с помощью
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
вы можете также прочитать кисть по умолчанию перед
default_tree_widget_item_brush = treeWidgetItem.background(column)
и вернемся к этому позже, когда вы захотите вернуться к значениям по умолчанию.
Sidenote: В Qt 5.6, похоже, нет метода setBackgroundColor
для QTreeWidgetItems
, только setBackground
. Таким образом, решение может немного зависеть от используемой версии Qt.
Я успешно удалил цвет фона, установив его прозрачным белым.
treeWidgetItem.setBackgroundColor(0, QtGui.QColor(255, 255, 255, 0))
Это также работает с темными темами рабочего стола.
Но поскольку метод setBackgroundColor
устарел, я теперь использую:
treeWidgetItem.setBackground(0, QtGui.QBrush(QtGui.QColor(255, 255, 255, 0)))
Правильный метод состоит в том, чтобы очистить базовые данные, например:
treeWidgetItem.setData(0, QtCore.Qt.BackgroundRole, None)
Стоит отметить, что когда фон не был установлен, метод background()
фактически вернет нулевой QBrush
а не None
. Это связано с тем, что базовый код Qt делает это:
return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole))
Поэтому он принимает нулевой QVariant
(который эквивалентен None
, в терминах PyQt) и отбрасывает его на нулевой QBrush
что означает, что он не представляет цвета системы по умолчанию и не может быть использован для сброса исходных значений.
- Цвет ярлыка, изменяющий другие метки
- Как я могу задать цвет для разных букв?
- python интерактивный сюжет новейшая линия в цвете, отдых в черном
- Как получить разные цветные линии для разных сюжетов на одной фигуре?
- matplotlib, pyplot: пользовательский цвет для определенного значения данных
- Python – Найдите похожие цвета, лучший способ
- doublex убивает цвет метки метки
- Измените цвет всех пикселей на другой цвет
- Имитировать щелчок мышью / Определить цвет под курсором в Python