2012-02-24 98 views
0

我正在构建一款教育软件,并且我在输出上伪代码,我希望根据哪段代码运行来突出显示特定代码行。突出显示特定的输出行

First round() 
..... 

- >突出这一行,接下来它移动 输出后:第一轮刚刚起步

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

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

+0

这个问题没有给出关于你的允许的技术是什么,除了暗示的壳是正常情况下的块。请编辑您的问题,以便更清楚。如果你只需要使用一个shell,你可以使用curses显示,或者每次改变高亮时清除屏幕(可能导致闪烁)。 – ninjagecko 2012-02-24 15:37:43

回答

1

你必须得到QTextBlock对象对应于要突出显示的行(*)或unhighlight和使用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线的状态,处理在QSyntaxHighlighter.highlightBlock()方法的那个状态这是语法突出显示的一部分,并强制使用QSyntaxHighlighter.rehighlightBlock()重新绘制前一行和当前行。

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