【问题标题】:Pyqt coloring part of text in QlistWidgetPyqt在QlistWidget中为部分文本着色
【发布时间】:2016-12-12 18:28:02
【问题描述】:

我想为 QListWidget 中的部分文本着色

我尝试包含标记字体 int 文本,但这不起作用。

【问题讨论】:

    标签: python pyqt qlistwidget


    【解决方案1】:

    您是在尝试将 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()
    

    这给出了这个:

    或者只是 QListWidgetItem 中的部分文本使用带有 addWidget() 和 HTML 的 QLabel:

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

    这给了这个

    【讨论】:

    • 如果我想从右到左改变 derction 怎么办!
    • 反转文本方向?所以它读起来就像我的例子“1 tsettset”?
    • 不给小部件贴标签 看这里的图片hpics.li/b08bef4我想从右到左
    • 我认为这值得提出硬性问题。它自己的。您能否提出一个新问题,非常清楚您目前拥有什么以及您想要什么。我稍后会尝试看看。同时,如果此答案解决了您最初提出的问题,请随时接受它和/或使用答案左侧的按钮为它投票。
    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 2012-02-28
    • 2014-07-07
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多