Create and display a list of items, one per line. The doc for the Tk listbox is found at: http://www.purl.org/tcl/home/man/tcl8.4/TkCmd/listbox.htm The doc for [BWidget]'s ListBox can be found at http://tcllib.sourceforge.net/BWman/ListBox.html (anyone want to describe how the two widgets differ? what other listbox widgets exist?) ** Documentation ** Other toolkits with listboxes include: * [BLT] (well, some of the add ons for BLT, anyways) * [ClassyTk] * [NexTk] * [TLC] * [Tix] * [Gnocl] ---- A simple example of the use of listbox (modified from the previous example, so that the scrollbar now works--[D. McC]) would be: #! /usr/bin/env wish #! /usr/bin/env wish listbox .lb -selectmode multiple -height 4 listbox .lb -selectmode multiple -height 4 scrollbar .sb -command [list .lb yview] .lb configure -yscrollcommand [list .sb set] .lb insert 0 sample stuff colors red yellow green grid .lb .sb -sticky news grid columnconfigure . 0 -weight 1 grid rowconfigure . 0 -weight 1 .lb itemconfigure 0 -foreground blue .lb itemconfigure 1 -foreground white .lb itemconfigure 2 -foreground black .lb itemconfigure 3 -foreground red .lb itemconfigure 4 -foreground yellow .lb itemconfigure 5 -foreground green [LV]: So, once `.lb` is created, and someone selects one of the entries, then [LV] So, once .lb is created, and someone selects one of the entries, then There's a listbox subcommand called ''curselection''. This provides you a list There's a listbox subcommand called ''curselection''. This provides you a list of indices selected. But is there a way one can get the text of the entry selected? Or does one have to create some sort of data structure, along with code to modify the data structure every time a user action results in a modified list? ---- Often someone asks how to get a listbox to take more than one selection and Often someone asks how to get a listbox to take more than one selection and people recommend they read the above reference page's information on ''-exportselection 0'' . '''CJU:''' Normally, if you have more than one listbox on the screen, selecting one listbox automatically unselects any previous selections in the all of the others. ''-exportselection 0'' is a way of getting around that at the cost of not being able to export the list element(s) to the X selection. I understand the reasoning for this behavior, but I think the default for ''-exportselection'' should be 0 instead of 1 for the listbox simply due to the confusion it can cause for newcomers of Tk and also the relative rarity of the need to copy from a listbox as opposed to a text or entry widget, for example. CJU: Normally, if you have more than one listbox on the screen, selecting one ''[MGS]'' - Note: selection is not the same as the clipboard. See: [selection] ''CJU'' - Corrected it. [MGS]: Note: selection is not the same as the clipboard. See: [selection] ---- [Tk]'s venerable [FAQ] covers several aspects of listbox management which are, [Tk]'s venerable [FAQ] covers several aspects of listbox management which are, in fact, frequently-asked. Among these are synchronization between parallel listboxes, multi-selection, ... [http://tcl.sf.net/faqs/tk/#listbox]. Also, note that people who start with listboxes often want to move to Also, note that people who start with listboxes often want to move to [combobox]es, [wcb], [multicolumn listbox]es (like [tablelist]), [hugecombo], [Hugelist], [virtuallist]... ---- [LV]: Has anyone implemented a listbox with separators, for cases where you [lv] Has anyone implemented a listbox with separators, for cases where you want to visually group related members of a listbox? [MHo] With [BWidget]'s ListBox it's at least possible, with the help of the -window option, to draw a line which visually acts as a separator. The -text could be "" then. Seems the line is not clickable (but selectable via keyboard... - maybe some bindings would help). I'm in search for such a solution, too. [MHo]: With [BWidget]'s ListBox it's at least possible, with the help of the [RS] 2006-12-11 [Mousewheel] is supported by Tk (on Win XP at least), but in a surprising way: [focus] is needed, but can't be applied by clicking into a listbox, even with the -takefocus 1 option. After an explicit focus .lb the widget border is highlighted, and the mousewheel can be used to scroll up and down. To get "focus follows click", you can add a binding like this: [RS] 2006-12-11: [Mousewheel] is supported by Tk (on Win XP at least), but in a bind .lb <1> {+ focus %W} ====== ---- the widget border is highlighted, and the mousewheel can be used to scroll up See also: ====== * [A little list selector]: two listboxes for selecting a subset * [A minimal minimal multi listbox widget] * [A minimal multi listboxes megawidget] * [alternate.listbox.colors] * [Bwidget Listbox Drag & Drop] * [Disabling listbox items] * [extended listbox] * [flash.listbox.selection] * [Hierarquical listbox] * [How to totally handle listbox selection] * [Hugelist] & [Virtuallist]: listbox replacements * [Listbox navigation by keyboard] * [listbox selection vs. active element] * [listbox selection] * [mclistbox] * [multi scrolling] * [multicolumn listbox] * [Quick positioning in listbox] * [Scrolled listbox widget -Display a list, pick any item then perform some follow up action.] * [Sort listboxes by Drag-and-drop] * [tablelist] * [Traversing listboxes via the keyboard] * [Undo and Redo undoable widgets] * [Hugelist] * [listbox replace command] * [fancy listbox] * [Miscellaneous Tcl procs (Corey)] * [PRS Open Source Software] * [tinycombo] * [tktable] * [tktreectrl] * [xlistbox]