gpt4 book ai didi

python - QtGui.QTextEdit 根据线条包含的文本设置线条颜色

转载 作者:行者123 更新时间:2023-11-30 22:48:28 25 4
gpt4 key购买 nike

这是我第一次使用 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 轻松完成。这是一个简单的演示:

screenshot

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 根据线条包含的文本设置线条颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40155268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com