2016-12-12 22 views

ответ

3

Вы пытаетесь покрасить часть текста QListWidgetItem или всего текста одним QListWidgetItem?

Если вы хотите покрасить весь один элемент QListWidgetItem, используйте item.setTextColor(). Этот пример окрашивает текст второго пункта красный:

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() 

Что дает это:

enter image description here

Или только часть текста в QListWidgetItem использовать QLabel с addWidget() и 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() 

Что дает этот

Gives

+0

если я хочу изменить отклонение справа налево, как! –

+0

Обратное направление текста? так что он читается, как в моем примере «1 tsettset»? –

+0

Вы пробовали ответ или предложения в комментариях по http://stackoverflow.com/questions/26378900/set-text-direction-for-qlabel? –