python-QtGui.QTextEditは、行に含まれるテキストに基づいて行の色を設定します

私の問題に対する答えを見つけるためにstackoverflowを使用するのは初めてです。
QtGui.QTextEditを使用して以下のようなテキストを表示していますが、特定のテキストが含まれているかどうかに基づいて、一部の行のテキストの色を変更したいと思います。

-[で始まる行は青になり、[ERROR]を含む行は赤になります。
私は現在、次のようなものを持っています、

from PyQt4 import QtCore, QtGui, uic
import sys

class Log(QtGui.QWidget):
    def __init__(self, path=None, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.taskLog = QtGui.QTextEdit()
        self.taskLog.setLineWrapMode(False)
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(self.taskLog)
        self.setLayout(vbox)

        log = open("/net/test.log", 'r')
        self.taskLog.setText(log.read())
        log.close()


app = QtGui.QApplication(sys.argv)
wnd = Log()
wnd.show()
sys.exit(app.exec_())

テキストは現在このように見えます

--[ Begin 
this is a test

[ERROR] this test failed.

--[ Command returned exit code 1

願わくば、皆さんがこれをもっと早く解決できるように助けてくれて、私の自己解決に努めてくれることを願っています。

おかげで、
マーク

ベストアンサー
これはQSyntaxHighlighterで非常に簡単に実行できます。以下に簡単なデモを示します。

from PyQt4 import QtCore, QtGui

sample = """
--[ Begin
this is a test

[ERROR] this test failed.

--[ Command returned exit code 1
"""

class Highlighter(QtGui.QSyntaxHighlighter):
    def __init__(self, parent):
        super(Highlighter, self).__init__(parent)
        self.sectionFormat = QtGui.QTextCharFormat()
        self.sectionFormat.setForeground(QtCore.Qt.blue)
        self.errorFormat = QtGui.QTextCharFormat()
        self.errorFormat.setForeground(QtCore.Qt.red)

    def highlightBlock(self, text):
        # uncomment this line for Python2
        # text = unicode(text)
        if text.startswith('--['):
            self.setFormat(0, len(text), self.sectionFormat)
        elif text.startswith('[ERROR]'):
            self.setFormat(0, len(text), self.errorFormat)

class Window(QtGui.QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.editor = QtGui.QTextEdit(self)
        self.highlighter = Highlighter(self.editor.document())
        self.editor.setText(sample)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.editor)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 150, 300, 300)
    window.show()
    sys.exit(app.exec_())

転載記事の出典を記入してください: python-QtGui.QTextEditは、行に含まれるテキストに基づいて行の色を設定します - コードログ