2010-08-03 43 views
0

我想彩色文本發送到TextCtrl小部件,但不知道如何在wxPython

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)) 

基本上是片段在我的窗口定義一個狀態框發送彩色文本到TextCtrl,和我想要寫彩色的日誌消息給它。如果我只是做self.status_area.AppendText("blah")它會像我想要的那樣附加文本,但它會一直是黑色的。我找不到有關如何執行此操作的文檔。

回答

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() 
0

documentation of wxwidgets有這樣一段話(你也可以看看wxPython的文檔,但無論如何,它指向的wxWidgets): 要麼使用SetDefaultStyle您文本追加到您的textctrl,或插入文本使用SetStyle前後。 根據文檔,第一種解決方案更有效率(對我來說聽起來更容易)。