功能需求:在TextCtrl中输出一段话,其中一部分为红色,一部分为绿色,一部分为黄色。
功能实现:
如果你是用的wxFormBuilder的话,选中你需要操控的TextCtrl,其中的style改为 wx.TE_MULTILINE |wx.TE_RICH2 。
然后生成一下代码即可。
如果不想使用WxFormBuilder的话,则可以修改代码为
self.output_textCtrl1 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE |wx.TE_RICH2 )
然后使用AppendText函数增加文本。(需要注意的是这里不能使用SetValues会导致文本颜色不变,且该函数需放在SetStyle函数之前,否则会将后续的所有文本都变成统一颜色。猜测是需要SetStyle函数只能对TextCtrl中的现有文本进行操作。)
output_str="WxPython 实现TextCtrl部分文本颜色控制"
self.output_textCtrl1.AppendText(str(output_str))
之后使用SetStyle函数控制文本的颜色显示。
self.ouput_textCtrl1.SetStyle(0, 6, wx.TextAttr("black",'Red'))#TextAttr函数前为字体颜色,后为字体背景颜色。
self.ouput_textCtrl1.SetStyle(6, 12, wx.TextAttr("v","Green"))
self.ouput_textCtrl1.SetStyle(12, len(output_str), wx.TextAttr("black","Yellow"))
实现效果如下: