wx textctrl font style

P

Pom

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 !!!
 
K

kyosohma

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
 
P

Pom

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

Thx alot !

I know HTML, so I certainly will skip the richtext.

I did'nt see that fancytext widget, I'll take a look and decide between
that and the htmlwindow.

I'm making a simple addressbook, which I can't find like I need it (with
mysql db)


Kindly regards
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top