今回やること
テキストボックス (TextCtrl) の一部の文字に色を付けたいと思います。これができれば、文字を強調することができます。
ソースコード
import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"ウィンドウ") panel = wx.Panel(self,-1) textctrl = wx.TextCtrl(panel,-1,"",style=wx.TE_MULTILINE|wx.TE_RICH|wx.TE_READONLY,pos=(5,5),size=(300,150)) text = "TextCtrlの一部のテキストに色を付ける\n\nそして、ここが赤くなります。" textctrl.SetValue(text) textctrl.SetStyle(28,30,wx.TextAttr(wx.RED)) #ここに注目! app = wx.App(False) MyFrame().Show(True) app.MainLoop()
日本語がおかしいですが、それよりも、こんな感じで指定した場所に色を付けられます。
解説
ここに注目!とコメントされた行を見てください。textctrl.SetStyle(28,30,wx.TextAttr(wx.RED)) #ここに注目!まず、TextCtrlのSetStyleで色付けを行います。
その、第一引数には、色をつける部分のstartの位置を、第二引数には、色を付ける部分のendの位置を、第三引数にはwx.TextAttrを指定します。
wx.TextAttrの引数には、wxPythonのカラーを指定します。
また、Windows環境では、wx.TextCtrlを生成するときに、styleにwx.TE_RICHまたはwx.TE_RICH2を利用します。
また、この方法をなんとか使えば、テキストエディタの「検索」という機能を使えるようになります。
Meryなどが分かりやすいですが、 これは背景ですが、これの文字色バージョン 的なものをつくれると思います。
その、特定の文字列に色をつける、という方法を別の記事で投稿したいと思います。
今回はここまでにします。
ご意見、ご要望、ご質問は下のコメントから気軽にどうぞ!
動作環境:
Python 3.8.2乃至Python 3.9.5
Windows 10
64bit
wxPython 4.1.1a1
0 件のコメント:
コメントを投稿