2017-08-16 166 views
-1

我是PyQt的新手。我想設計一個列表,它將顯示具有不同背景和文本顏色的不同項目。我可以將項目添加到我的列表中,但無法配置它們以設置不同的顏色。pyqt4:QListWidget:如何動態設置不同的文本和背景顏色

from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName(_fromUtf8("MainWindow")) 
     MainWindow.resize(786, 552) 
     self.mylist = QtGui.QListWidget(self.centralwidget) 
     self.mylist.setObjectName(_fromUtf8("mylist")) 


     self.mylist.addItem("item1") 


     self.mylist.addItem("item2") 

if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    MainWindow = QtGui.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 
    sys.exit(app.exec_()) 

我將上面的代碼添加到mylist中名爲item1和item2的項目。我想將背景顏色和文字顏色設置爲item1藍色和白色,並將item2設置爲紅色和黑色。我怎麼能這樣做?

+0

是的,先生,它的工作 –

回答

1

QListWidgetItem類有setBackground()

QListWidgetItem.setBackground(your_color) 

你的情況:

self.mylist.item(0).setBackground(QtCore.Qt.blue) 
# self.mylist.item(0).setBackground(QtGui.QColor("blue")) 
# self.mylist.item(0).setBackground(QtGui.QColor(0, 0, 255)) 
self.mylist.item(1).setBackground(QtCore.Qt.white) 
# self.mylist.item(1).setBackground(QtGui.QColor("white")) 
# self.mylist.item(1).setBackground(QtGui.QColor(255, 255, 255)) 
+0

感謝的很多。它正在工作。請告訴我如何設置文字(字體)顏色 –

+0

字體顏色不變 –

+0

setTextColor正在工作。感謝您的幫助。 –