Шаг 56.
Библиотека Tkinter. Компоненты и вспомогательные классы. Нестилизуемые компоненты. Компонент Listbox: список (окончание)
На этом шаге мы рассмотрим методы этого компонента и приведем пример его использования.
Набор методов, поддерживаемых компонентом Listbox, также весьма велик:
- insert (<Индекс пункта>, <Текст вставляемого пункта>) - вставляет новый пункт, текст которого задан в виде строки вторым параметром, перед пунктом, индекс которого указан первым параметром.
В качестве индекса пункта можно использовать:
- целочисленный номер пункта. Нумерация пунктов в списке начинается с 0;
- tkinter.END - конец списка;
- tkinter.ACTIVE - выбранный пункт списка. Если список позволяет выбирать несколько пунктов, указывает на пункт, выбранный последним;
- строку формата "@<Горизонтальная координата>,<Вертикальная координата>" - пункт, на который приходится точка с указанными координатами, или ближайший к этой точке пункт.
Координаты задаются в виде целых чисел в пикселях относительно самого списка.
Любопытно, что с помощью метода insert() можно поместить в список пункт, чей текст содержит пробелы. Так что применять этот метод для заполнения списка удобнее, нежели пользоваться опцией listvariable;
- delete (<Начальный индекс>[, <Конечный индекс>]) - удаляет все пункты, расположенные между указанными в параметрах индексами, включая и сами эти пункты. Если второй параметр
отсутствует, удаляет пункт с индексом, заданным первым параметром;
- itemconfig (<Индекс пункта>, <Опции пункта>) - задает для пункта с указанным индексом значения опций. Поддерживаются следующие опции пунктов:
- foreground - цвет текста;
- background - цвет фона;
- selectforeground - цвет текста у выбранного пункта;
- selectbackground - цвет фона у выбранного пункта;
- itemcget (<Индекс пункта>, <Название опции>) - возвращает значение опции с указанным названием для пункта с указанным индексом. Если для опции не было
задано значение, возвращается пустая строка;
- curselection () - возвращает кортеж с целочисленными номерами выбранных пунктов. Если ни один пункт в списке не выбран, возвращается пустой кортеж;
- selection_includes (<Индекс пункта>) - возвращает 1, если пункт с заданным индексом находится в числе выбранных пользователем, и 0 - в противном случае;
- activate (<Индекс пункта>) - делает пункт с указанным индексом выбранным;
- selection_set (<Начальный индекс>[, <Конечный индекс>]) - делает выбранными все пункты, расположенные между указанными в параметрах индексами, включая и сами эти пункты.
Если второй параметр отсутствует, делает выбранным только пункт с индексом, заданным первым параметром;
- selection_clear (<Начальный индекс>[, <Конечный индекс>]) - убирает из числа выбранных все пункты, расположенные между указанными в параметрах индексами, включая и сами эти пункты.
Если второй параметр отсутствует, делает невыбранным только пункт с индексом, заданным первым параметром;
- index (<Индекс пункта>) - выполняет прокрутку списка таким образом, чтобы пункт с заданным индексом находился в его верхней части;
- see (<Индекс пункта>) - прокручивает список таким образом, чтобы пункт с указанным индексом появился в поле зрения пользователя;
- size () - возвращает количество пунктов в списке;
- nearest (<Вертикальная координата>) - возвращает целочисленный номер пункта, на который приходится указанная вертикальная координата. Последняя задается целым числом в пикселях относительно списка;
- get (<Начальный индекс>[, <Конечный индекс>]) - возвращает кортеж с текстовыми надписями всех пунктов, расположенных между указанными в параметрах индексами, включая и сами эти пункты.
Если второй параметр отсутствует, возвращает текст пункта с индексом, заданным первым параметром, в виде строки;
- bbox (<Индекс пункта>) - если пункт с указанным индексом видим, возвращает кортеж из четырех значений: горизонтальной и вертикальной координат левого верхнего угла воображаемого
прямоугольника, охватывающего этот пункт, ширины и высоты его текста. Все значения представлены в виде целых чисел и измеряются в пикселях, обе координаты указываются относительно самого списка. Если пункт с заданным индексом невидим,
возвращается пустая строка.
Осталось рассмотреть пример использования списка Listbox. Здесь в списке выводятся четыре пункта, представляющие четыре программные платформы, и для первого пункта устанавливаются белый цвет текста и черный цвет фона:
import tkinter
import tkinter.ttk
class Application(tkinter.ttk.Frame):
def __init__(self, master=None):
super().__init__(master)
# Обязательно указываем ширину и высоту контейнера посредством
# опций width и height соответственно
self.configure(width=200, height=100)
self.pack(padx=4, pady=4)
self.create_widgets()
self.master.title("Пример использования ListBox")
def create_widgets(self):
s = tkinter.ttk.Style()
s.theme_use('classic')
lstPlatforms = tkinter.Listbox(self, cursor="mouse", exportselection=0,
activestyle="dotbox")
lstPlatforms.insert(tkinter.END, "Python")
lstPlatforms.insert(tkinter.END, "PHP")
lstPlatforms.insert(tkinter.END, "Ruby")
lstPlatforms.insert(tkinter.END, ".NET")
lstPlatforms.itemconfig(0, foreground="white", background="black")
lstPlatforms.grid()
root = tkinter.Tk()
app = Application(master=root)
root.mainloop()
Архив с файлом можно взять
здесь.
Рис.1. Компонент Listbox
На следующем шаге мы рассмотрим реализацию прокрутки в компоненте Listbox.
Предыдущий шаг
Содержание
Следующий шаг