PyQt的。使用QSyntaxHighlighter在文本中突出显示某些位置

时间:2017-10-28 14:34:06

标签: python pyqt pyqt5

我在PyQt5中有一个程序。该程序有一个QTextEdit字段,用于使用Python的方法html.escape()打印清晰的HTML。使用.append()在字段中添加了每个字符串。某些字符串中的某些标记需要突出显示。我使用了下一个代码:

self.textEdit.append('{0}{color}{1}{endcolor}{2}'.format(begin,
color_text, end, color='<font color="red">', endcolor='</font>')

最近我在互联网上找到了一个可以打印字符串编号的模块。该模块使用QPlainTextEdit。我还找到了一个语法高亮模块,它由QSyntaxHighlighter安排,也用于QPlainTextEdit。这一切都很好,但现在我无法使用上面的代码突出显示其他标签。我不仅要强调html语法,还要突出其他颜色的其他一些标签。我试图创建另一个QSyntaxHighlighter,它会突出显示它得到的整个文本。

def format(color, style=''):
    _color = QColor()
    _color.setNamedColor(color)
    _format = QTextCharFormat()
    _format.setForeground(_color)
    return _format

class PythonHighlighter (QSyntaxHighlighter):
    def __init__(self, document):
       QSyntaxHighlighter.__init__(self, document)

    def highlightBlock(self, text):
        self.setFormat(0, len(text), format('red'))
        self.setCurrentBlockState(0)

然后在必要的地方我写道:

highlight = syntax.PythonHighlighter(self.textEdit.document())
self.textEdit.show()
self.textEdit.appendPlainText(...)

我想将此荧光笔应用于代码中上面{color}和{endcolor}之间的html位置。我可以只将荧光笔应用于部分场地吗?怎么样?如果我不能,哪些方法可以解决我的问题? 附:抱歉我的英文错误。你可以告诉我他们的情况。

0 个答案:

没有答案