我正在构建一个教育软件,我在输出上有伪代码,我想根据正在运行的代码段突出显示特定的代码行。
First round()
.....
- >突出显示此行以及移动后的下一行 输出:第一轮刚刚开始
我得到的最远的是做一些bash突出显示,但这要求我打印两次线。一次是黑色,第二次是不同的颜色。有关如何突出显示特定行的任何建议?任何帮助表示赞赏。
编辑:我正在使用Pyqt作为我的GUI工具包,所以我的输出将显示在文本框中
答案 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
,您还可以使用QTextBlock
或QTextBlock.setUserState()
在setUserData
中存储该行的状态,并在{{1}中处理该状态}}方法作为语法高亮显示的一部分,并强制使用QSyntaxHighlighter.highlightBlock()
重新绘制上一行和当前行。
*:lines == blocks除非您使用自定义文档布局