QScintilla与PyQt:如何为预配置的词法分析器设置“样式”?

时间:2018-07-19 17:18:15

标签: python pyqt themes syntax-highlighting qscintilla

我最近发现了QScintilla,并且正在制作一个简单的文本编辑器,只是为了好玩。我遇到了一个问题。

我想有一种基于“主题”为每个词法器设置样式的方法。这是我创建的json文件(请参见下面的内容)。

{
    "comment": {
        "color": "#somecolor"
        ( font weight, etc here )
    }, ( more items here, such as "statement", "string", "number" etc )
}

我想做的就是将这些样式应用于每个词法分析器。我做了研究,发现在scintilla.NET(https://github.com/jacobslusser/ScintillaNET/wiki/Automatic-Syntax-Highlighting)中很容易做到这一点,但是我还没有在PyQt中找到类似的方法来做到这一点。

这是我链接的页面中要在PyQt中复制的代码片段:

scintilla.Styles[Style.Cpp.CommentLine].Font = "Consolas";
scintilla.Styles[Style.Cpp.CommentLine].Size = 10;
scintilla.Styles[Style.Cpp.CommentLine].ForeColor = Color.FromArgb(0, 128, 0); // Green

我已经打印出几个词法分析器的每个值(nexampleLexerHere.description(n)的描述,并且这些值在不同的词法分析器中似乎并不对应于同一件事。例如:在yaml中,第1个项目对应于一个注释,而在html中,它对应于一个标记。

我发现了这个:

lexer = QsciLexerPython()
lexer.setDefaultFont(self.__myFont)
lexer.setDefaultPaper(self.__bgcolor)
lexer.setDefaultColor(self.__fgcolor)
self.__editor.setLexer(lexer)

我可以用来设置每个词法分析器的默认设置,但是我尝试lexer.setCommentLineColor(self.__fgcolor)无效。

先谢谢您!如果需要任何澄清,请发表评论,我将更新问题。

0 个答案:

没有答案