最近我一直在研究PyQt正则表达式测试仪,我需要突出显示匹配的结果。在
这是我的代码:
def highlightBlock(self, text):
index = 0
length = 0
for item in self.highlight_data:
index = text.indexOf(item, index + length)
length = len(item)
self.setFormat(index, length, self.matched_format)
在self.highlight_数据是一个存储匹配数据的列表,该方法迭代文本以查找并突出显示它们。但当匹配的数据包含'\n'(多行)时,结果将不会正确突出显示。在
当我调试代码时,我发现如果文本包含多行,highlightBlock(text)方法将被调用多次。每次参数文本都是一行数据。在
然后我把代码改成:
^{pr2}$这将解决问题。在
我的问题是:为什么highlightBlock(text)方法每次处理一行?为什么不将整个文本(包括'\n')传送一次而不是一行多次传送?在
我想线索就在“highlightBlock”这个名字里。每当块的文本在文档中发生更改时,都会调用它。在
要引用QTextEdit的Qt文档:
因此,由于QTextEdit可以处理段落/块,QSyntaxHighlighter也应该这样做。在
相关问题 更多 >
编程相关推荐