Отображение разнородных данных в виде дерева 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.