On Apr 20, 8:38 pm, "bcwh...@pobox.com" <bcwh...@pobox.comwrote:
I'm running Python2.5 with wxPython v2.8.3.0 under WinXP and I cannot
get the SetDefaultStyle method to work.
I'm trying:
self.output.SetDefaultStyle(wx.TextAttr(wx.RED))
self.output.AppendText(text)
self.output.SetDefaultStyle(wx.TextAttr())
where "self.output" is a TextCtrl window. The text appears, but it's
always black. If I print the output of
self.output.GetDefaultStyle().GetTextColour() before resetting it back
to default, I see "(255, 0, 0, 255)". After reset, it's "(-1, -1, -1,
255)".
The font in that window is the system default.
Am I doing something wrong?
-- Brian
You didn't show the code that creates the TextCtrl. Is it something
like this:
self.output = wx.TextCtrl(myFrame, -1, style=wx.TE_MULTILINE |
wx.TE_RICH2)
On my platform, styling the text doesn't work for single line
TextCtrl's(which seems kind of stupid), and on Windows I think you are
required to specify wx.TE_RICH2 to style the text. This following
code colors the entered text red for me:
--------
import wx
myApp = wx.App(False)
myFrame = wx.Frame(None, -1, title="Test")
panel = wx.Panel(myFrame, -1)
my_tc = wx.TextCtrl(myFrame, -1, style=wx.TE_MULTILINE | wx.TE_RICH2)
my_tc.SetDefaultStyle(wx.TextAttr("red") ) #wx.RED works too
myFrame.Show()
myApp.MainLoop()
--------