Listbox
— это виджет, доступный в библиотеке Tkinter, который отображает список строк на пользовательском интерфейсе. ВиджетListbox
позволяет пользователю выбирать одну или несколько опций из списка.
Виджет Listbox
создается с помощью конструктора Listbox()
, который принимает родительский виджет в качестве параметра.
import tkinter as tk
root = tk.Tk()
listbox = tk.Listbox(root)
listbox.pack()
root.mainloop()
Этот код создает виджет Listbox
, который пока еще пуст. Чтобы добавить элементы в Listbox
, мы можем использовать метод insert()
.
listbox.insert(tk.END, "Item 1")
Метод insert()
принимает два параметра: индекс, где нужно вставить новый элемент, и сам элемент. tk.END
— это константа, которая ссылается на последний элемент в списке, поэтому новый элемент добавляется в конец списка.
Виджет Listbox
имеет ряд свойств, которые позволяют контролировать его внешний вид и поведение.
bg
: Устанавливает цвет фона виджета.fg
: Устанавливает цвет текста виджета.font
: Устанавливает шрифт текста.height
: Устанавливает высоту виджета (в строках).width
: Устанавливает ширину виджета (в символах).selectmode
: Устанавливает режим выбора элементов. Это может быть SINGLE (можно выбрать только один элемент), BROWSE (один элемент, но можно выбирать, прокручивая), MULTIPLE (можно выбрать несколько элементов) или EXTENDED (можно выбрать несколько элементов, а также использовать Shift и Ctrl для выбора).Пример использования свойств:
listbox = tk.Listbox(root, bg='blue', fg='white', font=('Arial', 16), height=5, width=20, selectmode=tk.MULTIPLE)
В дополнение к общим методам виджетов Tkinter, таким как pack()
и grid()
, Listbox
также имеет некоторые специфичные методы:
insert(index, *elements)
: Вставляет элементы в указанный индекс.delete(first, last=None)
: Удаляет элементы из списка. Может удалить один элемент или диапазон элементов.get(first, last=None)
: Возвращает элементы из списка. Может получить один элемент или диапазон элементов.curselection()
: Возвращает кортеж, содержащий индексы выбранных элементов.size()
: Возвращает количество элементов в списке.index(i)
: Возвращает индекс элемента в списке.see(index)
: Проскроллите список так, чтобы элемент с указанным индексом был видимым.activate(index)
: Устанавливает элемент с указанным индексом в качестве активного. Активный элемент выделяется, когда виджет получает фокус.import tkinter as tk
def show_selection():
selected_indices = listbox.curselection()
for i in selected_indices:
print(listbox.get(i))
root = tk.Tk()
listbox = tk.Listbox(root, selectmode=tk.MULTIPLE)
listbox.pack()
items = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
for item in items:
listbox.insert(tk.END, item)
button = tk.Button(root, text="Show Selection", command=show_selection)
button.pack()
root.mainloop()
В этом примере мы создаем виджет Listbox
и заполняем его пятью элементами. Затем мы создаем кнопку, которая, когда на нее нажимают, выводит выбранные пользователем элементы.
Также можно добавить, что виджет Listbox
в Tkinter поддерживает прокрутку с помощью другого виджета — Scrollbar
. Это особенно полезно, когда у вас в списке слишком много элементов, чтобы уместиться в одном окне.
Ниже приведен пример, как можно использовать Scrollbar
вместе с Listbox
:
import tkinter as tk
root = tk.Tk()
scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox = tk.Listbox(root, yscrollcommand=scrollbar.set)
for i in range(100):
listbox.insert(tk.END, f"Item {i + 1}")
listbox.pack(side=tk.LEFT, fill=tk.BOTH)
scrollbar.config(command=listbox.yview)
root.mainloop()
В этом коде мы сначала создаем Scrollbar
, затем Listbox
. В Listbox
мы передаем yscrollcommand=scrollbar.set
, что говорит Listbox
обновить положение ползунка на Scrollbar
каждый раз, когда изменяется прокрутка в Listbox
. Затем мы добавляем 100 элементов в Listbox
. После этого мы связываем прокрутку Scrollbar
с прокруткой Listbox
с помощью метода config()
.
Помимо этого, в Listbox
можно добавлять не только строки, но и виджеты, например, Checkbuttons
или Radiobuttons
, создавая таким образом динамические интерактивные списки.
Таким образом, виджет Listbox
в Tkinter является универсальным инструментом для создания списков в пользовательском интерфейсе.
Виджет Listbox
является полезным инструментом для предоставления пользователю возможности выбрать из списка опций. Он обладает большим количеством свойств и методов, которые позволяют контролировать его внешний вид и поведение, делая его мощным инструментом для создания пользовательских интерфейсов в Tkinter.
Содержание: