Виджет Treeview. Создание таблиц и деревьев

Управление данными в Treeview

Последнее обновление: 24.09.2022

Виджет 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")

В следующих статьях рассмотрим применение этих методов.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850