Виджет Treeview предназначен для отображения иерархических данных, причем как в виде дерева, так и в виде таблицы. Среди параметров Treeview следует отметить следующие:
columns: столбцы таблицы в виде строки или списка/кортежа строк
displaycolumns: отображаемые столбцы таблицы
cursor: курсор при наведении на виджет
height: высота виджета
padding: отступы от границ виджета до содержимого
selectmode: режим выбора элементов в виджете
show: формат отображения данных. Может принимать одно из следующих значений:
tree
: отображает столбец #0
heading
: отображает строку с заголовками
tree headings
: отображает столбец #0 и строку с заголовками
""
: не отображает ни столбец #0, ни строку с заголовками
Для добавления данных применяется метод insert():
insert: (parent, index, iid, values) -> str
Этот метод создает новый элемент и возвращает его идентификатор, который по умолчанию представляет строку наподобие "IOO1". Основные параметры метода:
parent: представляет идентификатор родительского элемента, в который добавляется элемент. Если создается элемент верхнего уровня, для которого не существует никакого родительского элемента, как, например, в случае с добавлением строки в таблицу, то передается пустая строка.
index: указывает индекс для вставки элемента. Если элемент добавляется в конец, то используется значение END
или
"end"
, либо указывается число, которое равно количеству элементов или больше его. Если элемент добавляется в самое начало, то указывается 0 или число меньше нуля.
iid: если указан данный параметр, то его значение будет использоваться в качестве идентификатора элемента. При этом подобный в виджете не должно быть элемента с подобным идентификатором, иначе генерируется новый идентификатор, как в обшем случае
values: список или кортеж значений, которые и составляют добавляемый элемент
Для удаления данных применяется метод delete():
delete(items)
В качестве параметра метод принимает удаляемые данные
Для перемещения элемента на другую позицию применяется метод move():
move(item, parent, index)
Этот метод создает новый элемент и возвращает его идентификатор, который по умолчанию представляет строку наподобие "IOO1". Основные параметры метода:
item: идентификатор элемента, который надо переместить.
parent: представляет родительский элемент перемещаемого элемента .
index: индекс, на который перемещается элемент
Для получения элементов применяется метод get_children():
get_children(item)
Он принимает идентификатор элемента, дочерние элементы которого надо получить, и возвращает набор идентификаторов полученных элементов:
for k in treeview.get_children(""): print(k)
В данном случае k представляет идентификатор элемент.
В качестве параметра в get_children()
передается элемент в Treeview, дочерние элементы которого мы хотим получить. Если надо получить элементы верхнего уровня (например,
строки таблицы), то передается пустая строка.
Конкретный элемент по ключу с помощью метода item(), в который передается идентификатор элемента:
for k in treeview.get_children(""): print(treeview.item(k))
в данном случае treeview.item(k)
возвратит набор значений элемента в Treeview (например, всю строку).
Если нам надо получить не весь набор значений, а только одно значение (отдельную ячейку строки), то применяется метод set(), в который передается идентификатор элемента и номер столбца:
for k in treeview.get_children(""): print(treeview.set(k, 0))
В данном случае получаем значение первой ячейки строки (при табличном отображении).
Если надо изменить один столбец, то применяется метод set()
set(item, column, value)
item: идентификатор элемента, который надо изменить.
column: индекс элемента в кортеже (столбца в строке), который надо изменить.
value: новое значение
например:
treeview.set("I003", 0, "Admin")
Здесь значение в первом столбце элемента с id=I003 меняется на строку "Admin"
Если надо изменить вообще весь элемент со всеми его значениями, то применяется метод item()
item(item, values)
item: идентификатор элемента, который надо изменить.
values: кортеж с новыми значениями
например:
treeview.item("I003", values=("Tim", 34, "tim@email.com"))
Здесь элемент с id=I003 в качестве значений принимает кортеж ("Tim", 34, "tim@email.com")
В следующих статьях рассмотрим применение этих методов.