wxPythonのTextCtrlで一部の文字の色を変更 / 文字を強調

2021年7月6日火曜日

Python wxPython

t f B! P L

今回やること

テキストボックス (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()

wxPythonのTextCtrlで一部のテキストの文字の色を変更させる

日本語がおかしいですが、それよりも、こんな感じで指定した場所に色を付けられます。

解説

ここに注目!とコメントされた行を見てください。
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などが分かりやすいですが、
wxPythonのTextCtrlで一部のテキストの文字の色を変更させる
これは背景ですが、これの文字色バージョン 的なものをつくれると思います。
その、特定の文字列に色をつける、という方法を別の記事で投稿したいと思います。


今回はここまでにします。
ご意見、ご要望、ご質問は下のコメントから気軽にどうぞ!

動作環境:
Python 3.8.2乃至Python 3.9.5
Windows 10
64bit
wxPython 4.1.1a1

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ