今回やること
テキストボックス (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 件のコメント:
コメントを投稿