EDIT#1 2014-08-21 13:50 [UTC+0000]
Tkinter.Listbox() -es have a rather complicated MVC-Model-Part behavior. Thus, its Controller-Part .methods() more complex to handle.
Listbox() by default select-mode allows only one item to be selected, but the select-mode argument supports four parameters: SINGLE , BROWSE , MULTIPLE and EXTENDED (default is BROWSE ). Of these, the first two are single selection modes, and the last two allow you to select multiple items.
These modes differ in a subtle way.
For example, BROWSE is similar to SINGLE , but it also allows you to drag and drop .
Pressing an item in MULTIPLE mode switches its state without affecting the other selected items.
And the EXTENDED mode allows multiple selection and works like a Windows Explorer GUI file - you select one element with a simple click , several elements with the Ctrl -click combination and element ranges with Shift - click -s.
Several options can be programmed using this code:
listbox = Listbox( aWindow, bg = 'white', font = ( 'courier', fontsz ) ) listbox.config( selectmode = EXTENDED ) # see above listbox.bind( '<Double-1>', ( lambda event: onDoubleClick() ) ) # a lambda-wrapped CallBackHANDLER() # onDoubleClick: get messages selected in listbox # not listed here selections = listbox.curselection() # tuple of digit-string(s), aTupleOfSTRINGs, where digit-string(s) range from { 0, 1, .., N-1 } selections = [ int( x ) + 1 for x in selections ] # transform string(s) to shifted int(s), make 'em { 1, 2, .., N }
When multiple choices are enabled, the .curselection() method returns a list of string of digits indicating the relative numbers of the selected items, or returns an empty tuple if none are selected.
Beware of this method always returns a tuple of digits, even in single select mode.
Thus, symmetrically, the Listbox() .selection_set() method must have rich functionality in order to be able to configure all possible states for the <aSelectionSET> value.
QED is higher in the initial post.