我最近发现了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
我已经打印出几个词法分析器的每个值(n
)exampleLexerHere.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)
无效。
先谢谢您!如果需要任何澄清,请发表评论,我将更新问题。