Доступ GTK.Treeiter Inside render () Функция GTK.Cellrenderer - pygtk

StackOverflow https://stackoverflow.com/questions/5331031

  •  26-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь кодировать следующие: два столбца. Один содержит itemid, другой содержит тип. Я хочу отобразить ItemId только тогда, когда тип равняется конкретному значению.


class IDRenderer(gtk.CellRendererText):

  def __init__(self):
    gtk.CellRendererText.__init__(self)

  def do_render(self,window, widget, background_area, cell_area, expose_area, flags):
    if ----} Condition to ask for value of the typeId - Cell {-----:
      gtk.CellRendererText.do_render(self, window, widget, background_area, cell_area,    
                                     expose_area, flags)

gobject.type_register(IDRenderer)

Я не знаю, как получить ITER от рендерированной в настоящее время строки, которая мне нужно для определения значения TypeID. Это вообще возможно?

Это было полезно?

Решение

Теперь я узнал, благодаря хорошему парню на #pygtk на Gimpirc:

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

def renderId(celllayout, cell, model, iter):
  if model.get_value(iter,1) == 3:
    cell.set_property('visible',True)
  else:
    cell.set_property('visible',False)

treeviewcolumn = gtk.TreeViewColumn()
renderer = gtk.CellRendererText()
treeviewcolumn.add_attribute(renderer,'text',0)
treeviewcolumn.set_cell_data_func(renderer,renderId)

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

Столбец отображает значение в первом столбце (0) модели только в том случае, если значение во второй модели (1) равно 3

Я надеюсь, что это может помочь кому -то некоторое время.

Другие советы

Насколько я знаю, это невозможно. Вам необходимо использовать свойства пользовательского рендеринга, который будет автоматически устанавливать код, вызывая функцию рендеринга. (Как text свойство CellRendererText - код рендеринга не получает текст из модели дерева, но модель дерева устанавливает text Свойство рендеринга перед вызовом кода рендеринга.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top