Hello,
I'd like to set a custom style for a textctrl that includes custom tab positions.
The script below works on xp and displays custom tab positions for the textctrl, as coded.
However, the script fails to set custom tab positions on linux (fedora 5), though it does set custom text and background colours.
Does anyone know how to set custom tab positions for a textctrl on linux ?
#!/usr/bin/python
import wx
class DisFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.SetSize(wx.Size(600,400))
self.SetTitle('Temperamental TextCtrl Tabs')
# make a panel with a button / textctrl / listbox
self.panel = wx.Panel(self)
bs = wx.BoxSizer(wx.VERTICAL)
self.button = wx.Button(self.panel, -1, 'Set Tab Positions ' +\
'to [ 100, 300, 390, 800 ] and then Add Text')
self.button.Bind(wx.EVT_BUTTON, self.ButtonClicked)
bs.Add(self.button,0,wx.TOP|wx.LEFT|wx.RIGHT|wx.EXPAND,30)
bs.AddSpacer(wx.Size(10,10))
self.editor = wx.TextCtrl(self.panel, style=wx.TE_MULTILINE|\
wx.TE_PROCESS_TAB|wx.TE_RICH)
bs.Add(self.editor,1,wx.EXPAND|wx.LEFT|wx.RIGHT,30)
bs.AddSpacer(wx.Size(10,30))
self.lb = wx.ListBox(self.panel, wx.NewId(), style=wx.LB_SINGLE)
bs.Add(self.lb,2,wx.EXPAND|wx.BOTTOM|wx.LEFT|wx.RIGHT,30)
self.panel.SetSizer(bs)
def ButtonClicked(self, event):
# change the default style of the textctrl,
# set a few tab positions and then add
# some text
dastyle = wx.TextAttr()
dastyle.SetTabs([100, 300, 390, 800])
dastyle.SetBackgroundColour(wx.Colour(0,0,255))
dastyle.SetTextColour(wx.Colour(255,255,255))
self.editor.SetDefaultStyle(dastyle)
# add text to the textctrl
self.editor.Clear()
self.editor.AppendText('\ttab1\ttab2\ttab3\ttab4')
dastyle = wx.TextAttr()
dastyle.SetBackgroundColour(wx.Colour(255,0,0))
self.editor.SetDefaultStyle(dastyle)
self.editor.AppendText('\n\n custom tab positions ' +\
'appear on xp - but not on linux (fc5) ')
# display textctrl tab positions
dastyle = self.editor.GetDefaultStyle()
self.lb.Clear()
self.lb.Append('wx.TextCtrl.GetDefaultStyle().GetTabs()')
self.lb.Append('')
x = 1
for posi in dastyle.GetTabs():
self.lb.Append(' tab position ' + str(x) +\
' = ' + str(posi))
x += 1
event.Skip()
if __name__ == '__main__':
app = wx.App()
daframe = DisFrame(None)
daframe.Show()
app.MainLoop()
Thanks.
fedora 5 system:
wxPython Version: 2.6.3.2
wxPython Platform: wxGTK, unicode, gtk2, wx-assertions-off, SWIG-1.3.27
Python Version: 2.4.2.final
xp system:
wxPython Version: 2.7.1.3
wxPython Platform: wxMSW, unicode, wx-assertions-on, SWIG-1.3.29
Python Version: 2.4.3.final
_