我正在尝试将彩色文本发送到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")
它会附加我想要的文字,但它总是黑色的。我找不到有关如何执行此操作的文档。
答案 0 :(得分: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()
答案 1 :(得分:0)
documentation of wxwidgets有这个说法(你也可以查找wxPython文档,但无论如何都指向wxwidgets):
在将文本附加到textctrl之前或使用SetDefaultStyle
插入文本之后使用SetStyle
。
根据文档,第一个解决方案更有效(对我来说听起来更容易。)