在wxpython中向TextCtrl发送彩色文本
我想在一个叫做TextCtrl的小部件里发送彩色文字,但我不知道怎么做。
style = wx.TE_MULTILINE|wx.BORDER_SUNKEN|wx.TE_READONLY|wx.TE_RICH2
self.status_area = wx.TextCtrl(self.panel, -1,
pos=(10, 270),style=style,
size=(380,150))
其实这段代码是用来在我的窗口里定义一个状态框的,我想在里面写一些彩色的日志信息。如果我直接用 self.status_area.AppendText("blah")
这样的方法,它会把文字加上去,但颜色总是黑色的。我找不到相关的文档来告诉我该怎么做。
2 个回答
0
wxwidgets的文档里提到(你也可以查查wxPython的文档,不过它其实也是指向wxwidgets的):你可以在往文本框里添加文字之前使用SetDefaultStyle
,或者在插入文字后使用SetStyle
。根据文档,第一种方法更有效率(而且我觉得听起来也更简单)。
3
你需要调用 SetStyle 来改变文本的表现方式。
import wx
class F(wx.Frame):
def __init__(self, *args, **kw):
wx.Frame.__init__(self, None)
style = wx.TE_MULTILINE|wx.BORDER_SUNKEN|wx.TE_READONLY|wx.TE_RICH2
self.status_area = wx.TextCtrl(self, -1,
pos=(10, 270),style=style,
size=(380,150))
self.status_area.AppendText("blahblahhblah")
fg = wx.Colour(200,80,100)
at = wx.TextAttr(fg)
self.status_area.SetStyle(3, 5, at)
app = wx.PySimpleApp()
f = F()
f.Show()
app.MainLoop()