在QTextEdit中更改单个字符串颜色

时间:2014-06-18 13:39:08

标签: python qt pyqt qt4 text-coloring

我正在研究通过PyQt和Qt4开发的GUI。在我的GUI中,我有一个QTextEdit,它写入了各种数据。有没有办法可以在QTextEdit中操纵一个单词的颜色?

例如

redText = "I want this text red"
self.myTextEdit.write(redText)
blackText = "And this text black"
self.myTextEdit.append(blackText)

这可能吗?如果是这样,我怎么能这样做?

此致

须藤!!

5 个答案:

答案 0 :(得分:4)

您应该为它提供丰富的文字。可以通过创建<span>标记并将color属性设置为RGB值来完成此操作:

redText = "<span style=\" font-size:8pt; font-weight:600; color:#ff0000;\" >"
redText.append("I want this text red")
redText.append("</span>")
self.myTextEdit.write(redText)

blackText = "<span style=\" font-size:8pt; font-weight:600; color:#000000;\" >"
blackText.append("And this text black")
blackText.append("</span>")
self.myTextEdit.append(blackText)

答案 1 :(得分:0)

在对人们使用的其他方法进行一些研究之后,我想出来并希望分享。 我用QTextEdit尝试了“.setHtml”函数,但它没有用。

我发现你可以改变文字颜色,添加你的文字,然后再改变它,你改变颜色后添加的任何文字都变成那种颜色,但没有别的。

这是一个例子。

redColor = QColor(255, 0, 0)
blackColor = QColor(0, 0, 0)

self.myTextEdit.setTextColor(redColor)

redText = "I want this text red"
self.myTextEdit.write(redText)


self.myTextEdit.setTextColor(blackColor)

blackText = "And this text black"
self.myTextEdit.append(blackText)

而且,我想补充一下。 “。write”和“.append”函数不适用于我的“QTextEdit”类。不确定你的是否这样做,但对我有用的是“.insertPlainText”功能。只需将您的字符串转换为“QString”,就像这样

blackText = QString(blackText)

答案 2 :(得分:0)

您应该为它提供丰富的文字。可以通过创建标记并将color属性设置为RGB值来完成:

redText = "<span style=\" font-size:8pt; font-weight:600; color:#ff0000;\" >"    
redText.append("I want this text red")
redText.append("</span>")
self.myTextEdit.write(redText)

blackText = "<span style=\" font-size:8pt; font-weight:600; color:#000000;\" >"   
blackText.append("And this text black")
blackText.append("</span>")
self.myTextEdit.append(blackText)

分享编辑

于2014年6月18日13:45回答 Nejat 19.7k84875

试过这个,它给出了: 调试的程序引发了未处理的异常AttributeError “'str'对象没有属性'追加'”

答案 3 :(得分:0)

通过将“ .append()”替换为“ + =“ :,内贾特的答案对我有用:

redText = "<span style=\" font-size:8pt; font-weight:600; color:#ff0000;\" >"
redText += "I want this text red"
redText += "</span>"
self.myTextEdit.write(redText)

blackText = "<span style=\" font-size:8pt; font-weight:600; color:#000000;\" >"
blackText += "And this text black")
blackText += "</span>"
self.myTextEdit.append(blackText)

答案 4 :(得分:0)

我遇到了同样的问题,但没有找到明确的解决方案。 基本上,我的 GUI 在弄清楚如何按照其工作方式为文本着色之前,会重叠颜色并且无法使用独立颜色处理文本。

所以,看哪,有一天浏览互联网,我收集了一些信息并发现了类似的东西:

        #Import QColor, this will be responsible for doing the job.
        from PyQt5.QtGui import QColor
        from PyQt5 import uic, QtWidgets

        class Program:
            def writeonthescreen(self):
                #Set a color
                Screen.your_text_edit.setTextColor(QColor(255, 51, 0))
                
                #Write colored text
                Screen.your_text_edit.append('Red')

                Screen.your_text_edit.setTextColor(QColor(0, 204, 0))
                        
                Screen.your_text_edit.append('Green')

                Screen.your_tex_edit.setTextColor(QColor(0, 0, 255))
                        
                Screen.your_text_edit.append('Blue')


        if __name__ == '__main__':
            '''
            "Screen" is the name we will use to name the screen to be loaded.
             Imagine that this screen contains a QTextEdit, and a button that when pressed displays your text.

            '''
            app = QtWidgets.QApplication([])
            Screen = uic.loadUi('./your_screen_path')
            Screen.button_showtext_on_the_screen.clicked.connect(Program.writeonthescreen)
            
            Screen.show()
            app.exec()