Отображение разнородных данных в виде дерева GTK+

Я пишу интерфейс музыкального плеера, используя привязки Python для GTK+. Плейлист представляет собой TreeStore с альбомами, представленными элементами верхнего уровня, и дорожками их дочерних элементов.

Я хочу разделить сканирование музыкального каталога и чтение тегов музыкальных файлов, основываясь на догадке, что сканирование тегов требует больше времени, чем просто добавление элемента в хранилище дерева. Следовательно, я намерен запустить отдельный поток, который просматривает список воспроизведения и заполняет теги. Для этого элементы модели будут состоять из следующих столбцов:

[ 'file_path', 'tags_filled', 'album', 'title', (more items for tags) ]

Когда каталог музыки изначально просматривается, только file_path будет заполнен, и tags_filled установлен в False, Поток наполнителя тегов будет установлен tags_filled в True и остальные столбцы с их значениями из музыкального файла.

Когда дело доходит до отображения описанной модели, я хочу отображать строки по-разному в зависимости от tags_filled атрибут: когда это FalseЯ хочу, чтобы отображался только путь к файлу, охватывающий всю ширину виджета; и когда это TrueЯ хочу, чтобы только значения тегов отображались в отдельных столбцах.

Что-то вроде этого:

| Artist | Album  | Date | Title                      | Duration |
|--------+--------+------+----------------------------+----------|
| AC/DC  | T.N.T. | 1975 | It's A Long Way To The Top | 5:15     |  <-- scanned
| music/AC-DC/1975 - T.N.T/02 - Rock'N'Roll Singer.MP3           |  <-- not yet scanned

Можете ли вы предложить, как я могу перейти к реализации этого?

1 ответ

Невозможно объединить ячейки дерева (пока). Для этого вам нужно будет использовать таблицу (не рекомендуется с версии 3.4) или сетку. Вот как использовать эти виджеты для GTK 3 или проверить Справочное руководство PyGTK 2.0, если вы используете PyGTK.

Другие вопросы по тегам