2016-12-15 5 views
0

ich will von QList Widget Element erhalten und hinzugefügt, um es in QListWidgetItem var und alles ist in Ordnung, aber nach, dass ich brauche Hintergrundfarbe dieses Artikels und:Python - Wie background von QListWidgetItem bekommen

item = self.Listbox.takeItem(i) 
    print(item.backgroundColor) 

Für das habe ich bekam Fehler, dass background Attribut nicht

Bei PyQt4 existiert das Attribut existiert:

http://pyqt.sourceforge.net/Docs/PyQt4/qlistwidgetitem.html#backgroundColor

Aber was kann ich auf PyQt5 verwenden?

-

Der Ausgang des Drucks (dir (Artikel)):

enter image description here

+0

was ist das Ergebnis von Druck (dir (Artikel)) sehen? –

+0

Frage aktualisiert –

Antwort

2

Kurze Antwort ist

item.background().color().getRgb() 

den RGB-Wert zu erhalten, zum Beispiel (0, 0, 0, 255)

Längere Antwort ist, dass Backgroundcolor() ist veraltet jetzt http://doc.qt.io/qt-4.8/qlistwidgetitem-obsolete.html

(veraltet) QColor Backgroundcolor() const

sehen Also müssen Sie bekommen die QBrush mit Hintergrund() und dann bekommen QColor mit Farbe() erhalten dann RGB oder was auch immer Sie http://doc.qt.io/qt-4.8/qcolor.html

+0

Ja, es scheint in Ordnung zu sein :) aber wie kann ich diese Farben jetzt vergleichen? etwas wie 'if Item.background(). color(). getRgb() == QColor (255,0,0,255):' –

+0

Sie könnten item.background(). color(). value() verwenden, welches numerisch ist –

+0

Ich kann nicht zum Beispiel löschen blau und klar rot hat beide 255 numerisch von .value() Methode –

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_() 
Verwandte Themen