wxPythonで文字列を検索しハイライトしたい。

実現したいこと

文字列を検索しハイライトしたい。

前提

Python3とwxPythonをつかってテキストエディタを作っています。
wx.stc.StyledTextCtrlで作られたメインのエディタ領域と、wx.TextCtrで作られた検索ボックスがあり、検索ボックスに入力されたクエリをつかいエディタ領域の正規表現で一致するすべての文字列をハイライトしたいです。

発生している問題・エラーメッセージ

ハイライト出来ません。
イメージ説明

該当のソースコード

python3

1import wx 2from wx import stc 3import re 4 5・・・ 省略 6 7self.text_ctrl.StyleSetSpec(wx.stc.STC_STYLE_BRACELIGHT, "fore:#000000,back:#e0f0FF,bold") 8self.find_text.Bind(wx.EVT_TEXT, self.OnFindTextChangeSetStyling) 9 10・・・ 省略 11 12 def OnFindTextChangeSetStyling(self, event): 13 query = r'' + self.find_text.GetValue() 14 text = self.text_ctrl.GetText() 15 print(f"query= {query}") 16 print(f"text= {text}") 17 pattern = re.compile(query) 18 matches = pattern.finditer(text) 19 for match in matches: 20 print(f"match pos: {match.start()}-{match.end()}") 21 self.text_ctrl.StartStyling(match.start()) 22 self.text_ctrl.SetStyling((match.end()-match.start()), wx.stc.STC_STYLE_BRACELIGHT) 23 24### print ### 25query= efg 26text= abcdefg 27 hijklmn 28 opqrstu 29vwxyz 30match pos: 4-7

補足情報(FW/ツールのバージョンなど)

Windows11
Python3.10.11
wxPython4.2.0

コメントを投稿

0 コメント