Работа с таблицей Treeview в tkinter

Изучая все возможности tkinter столкнулся с двумя такими вопросами:

1.) Допустим есть абсолютно рандомная таблица, которую мы выводим в окно нашего приложения при помощи ttk.Treeview. Как в данной таблице сделать возможность выделения каждой ячейки и копирования информации из нее при помощи Cntrl+C? Пробовал использовать selectmode, но он выделяет всю строку целиком, а не конкретную ячейку.

2.) Есть ли какая-то возможность задавать длину для каждой ячейки отдельно? Например: заголовки ячеек передаются списком и соответственно на условно какое-то id выделять большую длину не разумно, а на длинное название было бы актуально. Возможно даже использовать длину в зависимости от длины содержимого или самого длинного элемента в конкретном столбце.

Заранее благодарю за помощь, без примера потому что вопросы назрели в моменте изучения модуля, а не конкретного проекта.


Ответы (1 шт):

Автор решения: Fox Fox
  • Копирование содержимого ячейки в буфер возможно, потому что есть возможность получить содержимое ячейки программно. Я пользуюсь таким получением данных именно из ячейки. Если потребуется, что-то тут допишу по этому поводу.

  • Есть ли какая-то возможность задавать длину для каждой ячейки отдельно? - это не Excel. Идеология этого виджета - табличная, то есть строки и колонки, или древо. Объект очень примитивный, особенно по сравнению с аналогами в других языках. Настолько, что актуальным становится изучение чего-то более умного, типа PyQt, именно из-за убогости именно этого объекта. Управление содержимым колонки осуществляется примерно так:

    mytreeview.column("column1", anchor = "w", stretch = False, minwidth = 110, width = 110)

где:

column1 - название колонки;
anchor - выравнивание содержимого колонки;
stretch - автоматическая подгонка ширины колонки под содержимое;
minwidth - минимально разрешённая ширина колонки (при изменении размеров, меньше этого значения сделать нельзя);
width - ширина колонки.

Ваш вопрос более всего относится к stretch. Иногда это удобно. Но если содержимое таблицы заведомо не помещается по ширине, такая опция превращает попытку прокрутки в кошмар. Я долго пытался как-то приспособить эту опцию, в результате отказался вообще. У меня всегда False.

→ Ссылка