2016-12-12 1 views

Répondre

3

Essayez-vous de colorer une partie d'un texte QListWidgetItem ou la totalité du texte d'un seul objet QListWidgetItem?

Si vous souhaitez colorer l'ensemble d'un seul élément QListWidgetItem, utilisez item.setTextColor(). Cet exemple colore le texte du deuxième point rouge:

from PyQt4 import QtGui, QtCore 
import sys 

class Main(QtGui.QMainWindow): 
    def __init__(self, parent = None): 
     QtGui.QMainWindow.__init__(self,parent) 
     self.initUI() 

    def initUI(self): 
     mylist = QtGui.QListWidget(self) 
     mylist.setMinimumSize(QtCore.QSize(800, 800)) 
     for i in range(5): 
      item = mylist.addItem('Item %s' % (i + 1)) 
     items = mylist.findItems("Item 2",QtCore.Qt.MatchExactly) 
     if len(items) > 0: 
      for item in items: 
       item.setTextColor (QtGui.QColor("red")) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    main = Main() 
    main.show() 
    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    main() 

Ce qui donne ceci:

enter image description here

Ou tout simplement partie du texte dans un QListWidgetItem utiliser QLabel avec addWidget() et HTML:

from PyQt4 import QtGui, QtCore 
import sys 

class Main(QtGui.QMainWindow): 
    def __init__(self, parent = None): 
     QtGui.QMainWindow.__init__(self,parent) 
     self.initUI() 

    def initUI(self): 
     mylist = QtGui.QListWidget(self) 
     mylist.setMinimumSize(QtCore.QSize(800, 800)) 
     for i in range(5): 
      widgitItem = QtGui.QListWidgetItem() 
      widget = QtGui.QWidget() 
      widgetText = QtGui.QLabel('test<span style="color:#ff0000;">test %s</span>' % (i + 1)) 
      widgetLayout = QtGui.QHBoxLayout() 
      widgetLayout.addWidget(widgetText) 
      widgetLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) 
      widget.setLayout(widgetLayout)  
      mylist.addItem(widgitItem) 
      widgitItem.setSizeHint(widget.sizeHint()) 
      mylist.setItemWidget(widgitItem, widget) 


def main(): 
    app = QtGui.QApplication(sys.argv) 
    main = Main() 
    main.show() 
    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    main() 

ce qui donne cette

Gives

+0

si je veux changer derction de droite à gauche comment! –

+0

Inverser la direction du texte? de sorte qu'il se lit comme dans mon exemple "1 Tsettset"? –

+0

Avez-vous essayé la réponse ou les suggestions dans les commentaires pour http://stackoverflow.com/questions/26378900/set-text-direction-for-qlabel? –