2016-01-28 8 views
0

Я искал весь интернет для этого, но ничего не нашел полезного. Я начинаю думать, что это невозможно сделать, но у кого-то должно быть требование такого типа.Python3 Gtk3 +: как скрыть ячейку строки

Мое приложение:

  • Я использую TreeStore в список родителей (папки) и Чайлдс (файлы);
  • Свернуть список столбцов, я буду иметь имя, путь (скрытый столбец), размер (относится только к дочерним элементам - легко маскируется для родителя, так как это типа str()), индикатор выполнения (я хочу, чтобы он отображался - показано в TreeView только для детей, а не для родителей).

Почему мне нужна эта функциональность:

  • Я хочу сделать приложение, которое будет отображаться индикатор выполнения для каждого файла из TreeStore я определил;
  • Будучи деревом, файлы будут иметь родительский (папка);
  • Я не хочу отображать индикатор выполнения для папки, так как он будет быть бесполезным с моей точки зрения и будет выглядеть плохо.

Я исследовал все доступные варианты/функции, но не смог найти тот, который будет делать это только для определенной ячейки из определенной строки.

только те функции, которые я нашел в том, что близки к, что мне нужно (но все еще непригодна) являются:

Gtk.CellRenderer.set_visible (CellRendererProgress, False) - но это делает весь CellRenderer невидимым ;

Gtk.TreeViewColumn.set_visible (False) - делает всю колонку невидимой;

установка «Нет» в качестве значения для столбца «Прогресс» будет по-прежнему отображать пустой индикатор выполнения, что-нибудь еще вызовет ошибку.

Я подумал о том, как я мог бы это сделать, минуя эту невозможность, но я не мог найти ответа. У меня нет идей.

ответ

0

Вы должны сделать скрытый столбец в хранилище деревьев, указав, показывать ли индикатор выполнения в каждой строке или нет. Затем привяжите этот столбец к видимости средства отображения ячеек, например:

progress_bar_tree_view_column.add_attribute(progress_bar_renderer, 'visible', 
    NUMBER_OF_MY_HIDDEN_COLUMN) 
+0

Спасибо. Всюду, где я искал, я обнаружил, что для Gtk.CellRendererProgress должны применяться следующие реквизиты: инвертированные, импульсные, текстовые, текстовые, xalign, text-yalign и значение. Я даже не пытался попробовать свойство «видимости», так как я попробовал для другого визуализировать свойство, которое не было указано в «https://developer.gnome.org/gtk3», и оно вызвало ошибку, Не найдется. Теперь я понимаю, что это свойство («видимо») наследуется от «Gtk.CellRenderer» и должно работать для всех рендерингов (текст, комбо и т. Д.). – UsManyDead