2010-08-03 3 views
0

Я пытаюсь отправить цветной текст в TextCtrl виджет, но не знаю, какотправки цветного текста в 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)) 

в основном, что фрагмент кода определяет окно состояния в моем окне, и я хотите писать цветные сообщения журнала. Если я просто сделаю 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. Согласно документам, первое решение является более эффективным (и звучит мне легче).

Смежные вопросы