突出显示特定的输出行

时间:2012-02-24 15:32:20

标签: python pyqt

我正在构建一个教育软件,我在输出上有伪代码,我想根据正在运行的代码段突出显示特定的代码行。

First round()
.....

- >突出显示此行以及移动后的下一行 输出:第一轮刚刚开始

我得到的最远的是做一些bash突出显示,但这要求我打印两次线。一次是黑色,第二次是不同的颜色。有关如何突出显示特定行的任何建议?任何帮助表示赞赏。

编辑:我正在使用Pyqt作为我的GUI工具包,所以我的输出将显示在文本框中

1 个答案:

答案 0 :(得分:1)

您必须获取与要突出显示或不突出显示的行(*)对应的QTextBlock对象,并使用QTextCursor更改该行的格式:

def setLineFormat(self, lineNumber, format):
    cursor = QTextCursor(self.textEdit.document().findBlockByNumber(lineNumber))
    cursor.setBlockFormat(format)     

# with
format = QTextBlockFormat()
format.setBackground(Qt.yellow)
# or
format.clearBackground() 

如果您使用的是QSyntaxHighlighter,您还可以使用QTextBlockQTextBlock.setUserState()setUserData中存储该行的状态,并在{{1}中处理该状态}}方法作为语法高亮显示的一部分,并强制使用QSyntaxHighlighter.highlightBlock()重新绘制上一行和当前行。

*:lines == blocks除非您使用自定义文档布局