我想从QList Widget获取项目并将其添加到QListWidgetItem var中,一切都很好,但之后我需要这个项目的背景颜色并且:
item = self.Listbox.takeItem(i)
print(item.backgroundColor)
为此,我遇到了backgroundColor 属性不存在的错误
在PyQt4中存在属性:
http://pyqt.sourceforge.net/Docs/PyQt4/qlistwidgetitem.html#backgroundColor
但是我可以在PyQt5上使用什么?
-
print的输出(dir(item)):
答案 0 :(得分:2)
简短回答是
item.background().color().getRgb()
获取RGB值,例如(0,0,0,255)
更长的答案是backgroundColor()现已过时,请参阅http://doc.qt.io/qt-4.8/qlistwidgetitem-obsolete.html
(已废弃)QColor backgroundColor()const
所以你必须使用background()获得QBrush然后使用color()获得QColor然后获取RGB或你想要的任何内容http://doc.qt.io/qt-4.8/qcolor.html
答案 1 :(得分:0)
#Get backgroundColor from QListWidgetItem
#This is the example code for Get backgroundColor from QListWidgetItem
#If your are not expecting this answer, sorry.
#Thanks, Subin Gopi
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class MyWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.listWidget = QtGui.QListWidget(self)
self.listWidget.setGeometry(QtCore.QRect(10, 10, 200, 150))
self.listWidget.setObjectName ('listWidget')
self.resize(250, 200)
self.listWidget.itemPressed.connect (self.getColor)
self.addItems ()
def addItems (self) :
itemList = {'Apple':'red', 'Orange':'#ff5500', 'Grape':'blue', 'Bean':'green', 'Banana':'yellow'}
for eachItem in itemList :
currentItem = QtGui.QListWidgetItem (self.listWidget)
#Set Color
bgBrush = QtGui.QBrush()
bgBrush.setStyle(QtCore.Qt.SolidPattern)
#Qt.GlobalColor
bgBrush.setColor (QtGui.QColor(itemList[eachItem]))
#RGB Value
#bgBrush.setColor (QtGui.QColor(170, 85, 255))
currentItem.setBackground(bgBrush)
fgBrush = QtGui.QBrush()
fgBrush.setColor (QtGui.QColor('black'))
currentItem.setForeground (fgBrush)
#Set text
currentItem.setText(eachItem)
def getColor (self) :
currentItem = self.listWidget.selectedItems ()
currentBrush = currentItem[-1].background ()
rgbColor = currentBrush.color ().red (), currentBrush.color ().green (), currentBrush.color ().blue ()
strColor = currentBrush.color ().name ()
print ('rgb- Color\t', rgbColor)
print ('str- Color\t', strColor, '\n')
if __name__=='__main__':
app = QtGui.QApplication(sys.argv)
widget = MyWidget()
widget.show()
app.exec_()