Tkinter listbox selection handling

Martin Franklin mfranklin1 at gatwick.westerngeco.slb.com
Mon Nov 11 03:30:44 EST 2002


On Sat, 2002-11-09 at 23:48, Tim Daneliuk wrote:
> Hmmm ...  I have Tkinter listbox created like this:
> 
> class myUI:
> 
>      def __init__(self, root):
> 
>          # Setup the visual elements
>          self.hSB = Scrollbar(root, orient=HORIZONTAL)
>          self.vSB = Scrollbar(root, orient=VERTICAL)
>          self.listbox = Listbox(root,
>                                 foreground = FCOLOR,
>                                 background  = BCOLOR,
>                                 font = (FNAME, FSZ, FWT),
>                                 selectmode=SINGLE,
>                                 exportselection=0,
>                                 xscrollcommand=self.hSB.set,
>                                 yscrollcommand=self.vSB.set,
>                                 height = HEIGHT,
>                                 width = WIDTH,
>                                 )
> 
>          self.hSB.config(command=self.y.xview)
>          self.hSB.pack(side=BOTTOM, fill=X)
>          self.vSB.config(command=self.DirList.yview)
>          self.vSB.pack(side=RIGHT, fill=Y)
>          self.DirList.pack(side=LEFT, fill=BOTH, expand=1)
> 
> 
> I instantiate it like this:
> 
> root = Tk()
> UI = myUI(root)
> 
> Then I add a handler:
> 
> UI.listbox.bind('<button-1>', handlerfunc)


Try this...

UI.listbox.bind("<ButtonRelease-1>", handlerfunc)




> 
> All this works fine up to a point.  However, inside handlerfunc(), if I do
> a UI.listbox.selection_get(,) I get the *previously* selected item back,
> not the currently selected item.  This is also the case if I try using
> UI.listbox.curselection().
> 
> I've worked around this by trashing the idea of an event handler and
> polling the widget regularly looking for changes, but that is a really
> ugly solution... This was suggested in some of my reading because there
> is no 'command' attribute for a Listbox.
> 
> So, am I missing something here? *Is* there a way to use events to
> pickup the currently selected Listbox item, or am I stuck doing it with
> polling?
> 
> TIA,
> ------------------------------------------------------------------------------
> Tim Daneliuk
> tundra at tundraware.com
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list






More information about the Python-list mailing list