2011-10-18 66 views
3

由于缺少很多场合的答案,以及我在这里收到的良好答案,这里是我的问题。Python wx.stc自定义突出显示

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

  1. 添加自己的词法分析器/荧光笔
  2. 从头开始创建自己的荧光笔和使用RichTextCtrl或喜欢。

欢迎任何方向的帮助。

ABC-符号例如:基于你到了那里我想你是知道的Scintilla是什么underlies wx.stc.StyledTextCtrl的 “火花” 标签

%% 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|| 
+0

出于某种原因,这是有效的着色,就好像它是一种编程语言。这绝不代表应该成为什么。 – ShadowFlame

回答

2

Python中做到这一点,你需要设置词法分析器“容器”,然后处理“的风格,需要”事件:

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

您的处理程序中做的正是将明显依赖于您试图突出显示的语法细节。

为了获得灵感,我建议您熟悉scintilla documentation on styling,并查看一些较简单的内置词法分析器的source code

一个小Googling也发现了这个wx.stc例如,可能会有所帮助:

http://www.janthor.com/skizzenaux/lexer/html_with_tex_ctrl.py

相关问题