Pythonwx.stc公司自定义突出显示

2024-09-30 00:34:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在很多情况下都没有答案,而我在这里得到了很好的答案,这是我的问题。在

我正在为ABC音乐符号语言编写一个程序(示例如下)。这不是wx.stc中支持的语言,我还没有找到一个好的解释或示例来说明如何:

  1. 添加我自己的lexer/highlighter
  2. 从头开始创建我自己的荧光笔,并使用RichTextCtrl或类似的工具。在

欢迎任何方向的帮助。在

ABC表示法示例:

%% this is a midi or postscript argument, and should be colored 
X: 1   % this is a comment and should be colored differently
T: Speed The Plough   % everything followed by a colon, except for |: should be colored
M: 4/4   % a variety of others should be colored
L: 1/8
R: reel
K: Dmaj
d3A BAFB|AF~F2 EFDE|F2AF ~G3B|   % the non-alphanumerics should be colored
ABdg fgfe|d3A BAFB|AF~F2 EFDE|
F2AF GABG|1ABdg fedc:|2ABde fdde||
|:f2ab afdf|g2fg ed (3Bcd|a2ab afdB|   % | and |: should be colored differently
ABde fe~e2|f2ab afdf|g2fg edBA|
[1F2AF GABG|ABdg fddg:|2F2AF ~G3B|ABdg fgfe||

Tags: and答案示例isbethisf2af
2条回答

要在Python中执行此操作,需要将lexer设置为“container”,然后处理“styleneeded”事件:

self.SetLexer(wx.stc.STC_LEX_CONTAINER)
self.SetStyleBits(5)
self.Bind(wx.stc.EVT_STC_STYLENEEDED, self.handleStyleNeeded)

您在处理程序中的具体操作显然取决于您试图突出显示的语法的细节。在

为了获得灵感,我建议您熟悉一下scintilla documentation on styling,并看看一些更简单的内置lexer的source code。在

一点谷歌搜索也发现this wx.stc example可能会有帮助。在

根据你的“闪烁体”标签,我想你已经意识到闪烁体是什么的基础wx.stc.StyledTextCtrl. 在

我找到了一个简单的方法来添加一些新的样式到闪烁:http://sphere.sourceforge.net/flik/docs/scintilla-container_lexer.html

它的水平很低。我希望我能把这当作一个评论,而不是一个“答案”,但我还没有足够的声誉。在

相关问题 更多 >

    热门问题