Label Variables
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Mon Dec 17 23:07:30 EST 2007
En Tue, 18 Dec 2007 00:46:27 -0300, Sam Garson <peanut.sam at googlemail.com>
escribió:
> I am trying to get the text of the selection in a list box and put into a
> variable, which is put into a label. i.e., whatever is selected will
> show in
> the label.
>
> However, because at the beginning there is nothing in the listbox (and
> therefore no selection), the tuple returned by curselection() is (),
> therefore when i try and get() from the linenumber in this tuple, the
> index
> is "out of range"
>
> here is the section of the program:
>
> box = Listbox(root, bg = '#ebe9ed', relief = 'groove', height = 15)
> box.grid(row = 2, columnspan = 2, sticky = W+E, padx = 3)
> box.bind("<Double-Button-1>", DeleteCurrent)
>
> v = StringVar()
> number = box.curselection()
> v.set = (box.get(int(number[0])))
> print number
>
> current = Label(root, textvariable = v)
> current.grid(row = 3, columnspan = 2, sticky = W+E, padx = 3)
>
> and here is the error:
>
> Traceback (most recent call last):
> File "C:\My Documents\My Python\Notes.py", line 27, in <module>
> v.set = (box.get(int(number[0])))
> IndexError: tuple index out of range
>
> How can i get it to only take the variable when i have selected
> something,
> or any other solution!
Just avoid using number[0] when number is empty. Empty tuples (and empty
lists and dictionaries) evaluate to False in a boolean context, so you can
check this way:
v = StringVar()
number = box.curselection()
if number:
v.set = (box.get(int(number[0])))
print number
...
--
Gabriel Genellina
More information about the Python-list
mailing list