Элемент Listbox в tkinter представляет список объектов. Определим простой список:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Для наполнения listboxa элементами в цикле for пробегаемся по всем элементам списка languages и добавляем каждый элемент в listbox с помощью метода insert(). В качестве первого аргумента в insert передается индекс вставки элемента. Но если мы хотим последовательно добавить элементы, то вместо индекса можно использовать значение END.

Для настройки виджета Listbox мы можем указать в его конструкторе следующие параметры:
- bg: фоновый цвет
- bd: толщина границы вокруг элемента
- cursor: курсор при наведении на Listbox
- font: настройки шрифта
- fg: цвет текста
- height: высота элемента в строках. По умолчанию отображает 10 строк
- highlightcolor: цвет элемента, когда он получает фокус
- highlightthickness: толщина границы элемента, когда он находится в фокусе
- relief: устанавливает стиль элемента, по умолчанию имеет значение SUNKEN
- selectbackground: фоновый цвет для выделенного элемента
- selectmode: определяет, сколько элементов могут быть выделены. Может принимать следующие значения: BROWSE, SINGLE, MULTIPLE, EXTENDED. Например, если необходимо включить множественное выделение элементов, то можно использовать значения MULTIPLE или EXTENDED.
- width: устанавливает ширину элемента в символах. По умолчанию ширина – 20 символов
- xscrollcommand: задает горизонтальную прокрутку
- yscrollcommand: устанавливает вертикальную прокрутку
Некоторую сложность при использовании Listbox представляет создание прокрутки. Рассмотрим, как это сделать:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Для создания прокрутки создается элемент Scrollbar. И так как необходимо прокручивать listbox по вертикали, то у него задается параметр yscrollcommand=scrollbar.set
В конце scrollbar ассоциируется с функцией, которую надо выполнять при прокрутке. В данном случае это метод yview элемента listbox. В итоге мы сможем прокручивать элементы по вертикали:

Основные методы Listbox
Listbox имеет ряд методов для управления поведением элемента и его содержимым. Некоторые из них:
- curselection(): возвращает набор индексов выделенных элементов
- delete(first, last = None): удаляет элементы с индексами из диапазона [first, last]. Если второй параметр опущен, то удаляет только один элемент по индексу first.
- get(first, last = None): возвращает кортеж, который содержит текст элементов с индексами из дипазона [first, last]. Если второй параметр опущен, возвращается только текст элемента с индексом first.
- insert(index, element): вставляет элемент по определенному индексу
- size(): возвращает количество элементов
Для рассмотрения этих методов напишем небольшой скрипт по управлению данными:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | |
Для манипулирования элемента списка здесь определено две кнопки. Первая кнопка вызывает функцию add(), которая получает введенное в текстовое поле значение и добавляет его на первое место в списке с помощью метода insert().
Вторая кнопка по нажатию удаляет выделенный элемент. Для этого мы сначала получаем выделенные индексы через метод curselection(). Так как в нашем случае выделяется только один элемент, то получаем его индекс через выражение selection[0]. И этот индекс передаем в метод delete() для удаления.
