4

多くの場合の答えの欠如、そして私がここで受け取った良い答えによって、ここに私の質問があります。

ABC記譜法のプログラムを書いています(サンプルは以下にあります)。これはwx.stcでサポートされている言語ではなく、次の方法に関する適切な説明や例をまだ見つけていません。

  1. 自分のレクサー/蛍光ペンを追加する
  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||
4

2 に答える 2

4

Python でこれを行うには、レクサーを「コンテナー」に設定してから、「スタイルが必要な」イベントを処理する必要があります。

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

ハンドラー内で正確に何を行うかは、明らかに、強調しようとしている構文の詳細に依存します。

インスピレーションを得るために、スタイリングに関する scintilla のドキュメントをよく読んで、より単純な組み込みレクサーのソース コードを確認することをお勧めします。

ちょっとしたグーグル検索でも、この wx.stc の例が参考になることがわかりました。

于 2012-12-06T21:28:19.180 に答える
1

そこにある「scintilla」タグに基づいて、Scintilla が wx.stc.StyledTextCtrl の根底にあるものであることを認識していると思います。

Scintilla に新しいスタイルを追加するための簡単なハウツーを見つけることができました: http://sphere.sourceforge.net/flik/docs/scintilla-container_lexer.html

これはかなり低レベルであり、Python ではありません。これを「回答」ではなくコメントにできたらいいのにと思いますが、まだ十分な評判がありません.

于 2012-12-06T16:03:50.663 に答える