Question

Je suis en train de coder les éléments suivants: Colonnes Deux. L'un contient un itemId, l'autre contient un typeId. Je veux rendre le itemId que lorsque la typeId est égale à une valeur spécifique.


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)

Je ne sais pas comment obtenir le iter de la ligne actuellement rendue que je dois déterminer la valeur de la typeId. Est-ce même possible?

Était-ce utile?

La solution

Je maintenant découvert, grâce à un bon gars sur #pygtk sur gimpIRC:

Vous pouvez le faire, avec une liaison que l'on appelle des fonctions de données de cellule à la gtk.TreeViewColumn correspondante comme on le fait ici dans cet exemple

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)

J'ommited un code pertinent pour rendre un TreeView complet, mais je pense que cela montre ce que je voulais faire et comment le faire.

La colonne renderes la valeur dans la première colonne (0) du modèle seulement si la valeur dans le second modelcolumn (1) est égal à 3

J'espère que cela pourrait aider quelqu'un à un certain temps.

Autres conseils

Il est impossible pour autant que je sache. Vous devez utiliser les propriétés du moteur de rendu personnalisé qui sera automatiquement défini par le code appelant la fonction de rendu. (Comme la propriété text de CellRendererText -. Le code de rendu ne soit pas le texte à partir du modèle d'arbre, mais le modèle d'arbre définit la propriété text du renderer avant d'appeler le code de rendu)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top