On Mar 31, 3:13 am, Pom <[EMAIL PROTECTED]> wrote: > Hello > > I have a tuple of strings which I must show in a textctrl, each item in > the tuple representing one line of text. > > The first three lines of text should each have another style (fontsize > and color) > > i'm using this code to achieve this: > tmppos = self.txtInfo.GetInsertionPoint() # get the cursor pos > self.txtInfo.write(str(csr[0])+'\n') > tmppos2 = self.txtInfo.GetInsertionPoint() # get the new cursor pos > self.txtInfo.SetStyle(tmppos, tmppos2, wx.TextAttr("BLUE", > wx.NullColour, tmpnewfont)) > self.txtInfo.write(str(csr[1])+'\n') > tmppos3 = self.txtInfo.GetInsertionPoint() # get the new cursor pos > self.txtInfo.SetStyle(tmppos2, tmppos3, wx.TextAttr("BLUE", > wx.NullColour, tmpnewfont2)) > self.txtInfo.write(str(csr[2])+'\n') > tmppos4 = self.txtInfo.GetInsertionPoint() # get the new cursor pos > self.txtInfo.SetStyle(tmppos3, tmppos4, wx.TextAttr(wx.Nullcolour, > wx.NullColour, tmpnewfont3)) > > Now, I was wondering if this is the right way of doing this, because I > have the feeling this code sucks. > > Anybody has a better way of doing this? > > Thx !!!
You could experiment with the "Rich Text" style of the text control (see the wxPython Demo). You might also mess with refactoring your code a little and doing a FOR loop. # untested code!!! fonts = [tmpnewfont, tmpnewfont2, tmpnewfont3] count = 0 tmppos = self.txtInfo.GetInsertionPoint() self.txtInfo.write(str(csr[count])+'\n') for i in range(3): tmppos2 = self.txtInfo.GetInsertionPoint() self.txtInfo.SetStyle(tmppos, tmppos2, wx.TextAttr("BLUE", wx.NullColour, fonts[count])) tmppos = tmppos2 count += 1 self.txtInfo.write(str(csr[count])+'\n') I also noticed a FancyText widget. I've used the HtmlWindow widget for an About screen before and I thought it was pretty cool if you know HTML. You might also try dropping an email to the wxPython Users Group at http://wxpython.org/maillist.php Hope this helps! Mike -- http://mail.python.org/mailman/listinfo/python-list