By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,172 Members | 727 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,172 IT Pros & Developers. It's quick & easy.

Tkinter Listbox - Different Text colors in one listbox

P: n/a
Hi,
Is it possible to have different items in a listbox in different
colors? Or is it just one color for all items in a listbox?
Thanks
Rahul

May 29 '07 #1
Share this Question
Share on Google+
6 Replies


P: n/a
On May 29, 12:02 pm, rahulna...@yahoo.com wrote:
Hi,
Is it possible to have different items in a listbox in different
colors? Or is it just one color for all items in a listbox?
Thanks
Rahul
Looks like it has to be the same color and font:
http://www.pythonware.com/library/tk...on/listbox.htm

Maybe there's a custom listbox in the PMW or Tix modules?

It would appear that wxPython has a control that does allow different
colors (and likely, fonts) called wx.HtmlListBox. I assume it would
allow any kind of html, although I've never played with it for sure.
The demo seems to imply that though.

Mike

May 29 '07 #2

P: n/a
<ra********@yahoo.comwrote:

Hi,
Is it possible to have different items in a listbox in different
colors? Or is it just one color for all items in a listbox?
Thanks
Rahul
You specify text and foreground colour when you make the box,
so I don't think its possible.

- Hendrik

May 30 '07 #3

P: n/a
On Tue, 29 May 2007 19:02:03 +0200, <ra********@yahoo.comwrote:
Hi,
Is it possible to have different items in a listbox in different
colors? Or is it just one color for all items in a listbox?
Thanks
Rahul
AFAIK, this is not possible with a listbox. You can however quite easily
emulate the behaviour of a listbox with a text widget, which allows to mix
fonts and colors in any way you like.

I did it once by creating a sub-class of Tkinter.Text (cannot post the
code here - closed source, sorry...) and all I had to do was:
- make sure the text widget had its state to DISABLED all the time, except
when modifying it;
- removing all the bindings defined in the text widgets (use
widget.bind_class('Text') to get all the events, then widget.bind(event,
lambda e: 'break') to remove them);
- define a new binding for a button click selecting the line under the
cursor;
- define the insert, delete and getcurselection methods, taking care of
treating the special index END.

All in all, this was just a few dozen lines.

HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
May 30 '07 #4

P: n/a
On May 29, 2:02 pm, rahulna...@yahoo.com wrote:
Hi,
Is it possible to havedifferentitems in alistboxindifferentcolors? Or is it justonecolor for all items in alistbox?
Thanks
Rahul
from Tkinter import *

root = Tk()
l = Listbox(root)
l.pack()
for x in range(10):
l.insert(END, x)
l.itemconfig(2, bg='red', fg='white')
l.itemconfig(4, bg='green', fg='white')
l.itemconfig(5, bg='cyan', fg='white')
root.mainloop()

You can _only_ configurate 'background', 'foreground',
'selectbackground', 'selectforegroud', not font :(

HTH

May 30 '07 #5

P: n/a
On May 30, 6:04 am, rfg...@gmail.com wrote:
On May 29, 2:02 pm, rahulna...@yahoo.com wrote:
Hi,
Is it possible to havedifferentitems in alistboxindifferentcolors? Or is it justonecolor for all items in alistbox?
Thanks
Rahul

from Tkinter import *

root = Tk()
l = Listbox(root)
l.pack()
for x in range(10):
l.insert(END, x)
l.itemconfig(2, bg='red', fg='white')
l.itemconfig(4, bg='green', fg='white')
l.itemconfig(5, bg='cyan', fg='white')
root.mainloop()

You can _only_ configurate 'background', 'foreground',
'selectbackground', 'selectforegroud', not font :(

HTH
Thanks for the feedback all. I tried the itemconfig method and it
works great.
Thanks

May 30 '07 #6

P: n/a
<rf****@gmail.comwrote:

On May 29, 2:02 pm, rahulna...@yahoo.com wrote:
Hi,
Is it possible to havedifferentitems in alistboxindifferentcolors? Or is it
justonecolor for all items in alistbox?
Thanks
Rahul

from Tkinter import *

root = Tk()
l = Listbox(root)
l.pack()
for x in range(10):
l.insert(END, x)
l.itemconfig(2, bg='red', fg='white')
l.itemconfig(4, bg='green', fg='white')
l.itemconfig(5, bg='cyan', fg='white')
root.mainloop()

You can _only_ configurate 'background', 'foreground',
'selectbackground', 'selectforegroud', not font :(
Live and learn, - was not aware you could do this - thanks, nice one.

- Hendrik

May 31 '07 #7

This discussion thread is closed

Replies have been disabled for this discussion.