将彩色文本发送到wxpython中的TextCtrl

时间:2010-08-03 08:30:29

标签: python wxpython

我正在尝试将彩色文本发送到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 :(得分: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。 根据文档,第一个解决方案更有效(对我来说听起来更容易。)