При помощи виджета Listbox вы можете добавлять в приложение список элементов, предлагаемых пользователю для выбора. Для создания объекта listbox используется конструктор Listbox(), которому в качестве аргументов указываются имя родительского контейнера (например, окна или фрейма) и возможные опции, самые популярные из которых представлены вместе с кратким описанием в таблице ниже.
Опция |
Описание |
bd |
Ширина рамки в пикселах (значение по умолчанию: 2) |
bg |
Цвет фона |
fg |
Цвет переднего плана |
font |
Шрифт для текста |
height |
Количество строк в списке (значение по умолчанию: 10) |
selectbackground |
Цвет фона выделенного текста |
selectmode |
Режим выбора (SINGLE — одиночный по умолчанию или MULTIPLE — множественный) |
width |
Ширина поля ввода списка в символах (значение по умолчанию: 20) |
yscrollcommand |
Привязка к полосе прокрутки |
В модуле tkinter полоса прокрутки организуется при помощи отдельного виджета scrollbar, который необходимо привязывать к виджетам Listbox, Text, Canvas и Entry.
from tkinter import *
import tkinter.messagebox as box
window = Tk() # Конструктор для создания объекта окна
window.title('Пример со списком')
frame = Frame(window)
listbox = Listbox(frame, selectmode = MULTIPLE)
listbox.insert(1, 'Первый')
listbox.insert(2, 'Второй')
listbox.insert(3, 'Третий')
def dialog():
list = [listbox.get(i) for i in listbox.curselection()]
box.showinfo( 'Выбор из списка', 'Ваш выбор: ' + \
', '.join(list))
btn = Button(frame, text = 'Сделать выбор', command = dialog)
btn.pack(side = RIGHT, padx = 5)
listbox.pack(side = LEFT)
frame.pack(padx = 30, pady = 30)
window.mainloop()
Если дополнительная опция selectmode (режим выбора) установлена в значение MULTIPLE (множественный выбор), то метод curselection() возвращает кортеж из порядковых номеров выбранных элементов.