2017-08-16 161 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正在工作。感谢您的帮助。 –