468,539 Members | 1,487 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,539 developers. It's quick & easy.

How to align the text of a Listbox to the right

Greetings gentlemen and ladies,
I have a question: in Tkinter, how to align a Listbox entry (i.e. a
line of text) to the right?
Google did not show up the answer to my request.
Thanks very much.

L

Apr 27 '06 #1
3 9738
On 27 Apr 2006 02:35:50 -0700, Leonardo da Vinci
<le***********************@gmail.com> wrote:
Greetings gentlemen and ladies,
I have a question: in Tkinter, how to align a Listbox entry (i.e. a
line of text) to the right?


In a real Listbox, the answer is simple: you can't.

What are you trying to do? Maybe there is another widget more suited to
your needs.
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Apr 27 '06 #2
I have to use a Listbox that shows a list of entries. Every entry is a
char string quite long in size and I cannot set "width" to a large
value due to limitations of screen resolution. The rightmost part is
more important, so I thought that I could show only the end of the
string by aligning the field to the right.

Apr 27 '06 #3
On 27 Apr 2006 07:00:36 -0700, Leonardo da Vinci
<le***********************@gmail.com> wrote:
I have to use a Listbox that shows a list of entries. Every entry is a
char string quite long in size and I cannot set "width" to a large
value due to limitations of screen resolution. The rightmost part is
more important, so I thought that I could show only the end of the
string by aligning the field to the right.


As I see it, there are two solutions to your problems:
- Display your strings differently. It may seem stupid, but there are
sometimes situations where it is the best solution. Think about Apple's
way of displaying full file path names in menus: they put the file base
name first, then the full directory after a separator. If you have a way
to do that, your problem is solved.
- Don't use a Listbox to display your list, but another widget. A simple
Text with no wrap option may be a solution; setting a tag with the option
justify=LEFT on your whole text would do the trick. But if your lines of
text should be selectable, it may not be the right solution. In this case,
another widget you can use is a Canvas. It's a little trickier but can be
done. Here is an example:

--------------------------------------
from Tkinter import *

root = Tk()

cnv = Canvas(root, width=150, height=250)
cnv.grid(row=0, column=0, sticky='nswe')
hscroll = Scrollbar(root, orient=HORIZONTAL, command=cnv.xview)
hscroll.grid(row=1, column=0, sticky='we')
vscroll = Scrollbar(root, orient=VERTICAL, command=cnv.yview)
vscroll.grid(row=0, column=1, sticky='ns')
cnv.configure(xscrollcommand=hscroll.set, yscrollcommand=vscroll.set)

xMax = 0
y = 0
for i in range(20):
lbl = Label(cnv, text='Very, very long item number %s' % i)
cnv.create_window(150, y, window=lbl, anchor='ne')
y += lbl.winfo_reqheight()
xMax = max(xMax, lbl.winfo_reqwidth())

cnv.configure(scrollregion=(150 - xMax, 0, 150, y))

root.mainloop()
--------------------------------------

Putting bindings on the Label widgets created in the loop can be used to
simulate the behaviour of a Listbox.

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

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

7 posts views Thread by Stan Brown | last post: by
8 posts views Thread by André Hänsel | last post: by
2 posts views Thread by Tom McL. | last post: by
3 posts views Thread by Sori Schwimmer | last post: by
reply views Thread by Sori Schwimmer | last post: by
reply views Thread by NPC403 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.