Frage

Ich versuche Folgendes zu codieren: zwei Spalten. Einer enthält eine Elementid, die andere enthält eine Typid. Ich möchte die ItemID nur dann rendern, wenn das Typid einem bestimmten Wert entspricht.


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)

Ich weiß nicht, wie ich den ITER der aktuell gerenderten Zeile bekomme, die ich für den Wert des Typs ID ermitteln muss. Ist das überhaupt möglich?

War es hilfreich?

Lösung

Ich habe jetzt dank eines netten Kerls auf #pygtk auf Gimpirc herausgefunden:

Sie können dies mit der Bindung von sogenannten Zelldatenfunktionen an den entsprechenden GTK.TreeviewColumn wie hier in diesem Beispiel getan

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)

Ich habe einen Code verboten, der relevant ist, um eine vollständige TreeView zu rendern, aber ich denke, er zeigt, was ich tun wollte und wie es zu tun ist.

Die Spalte rendert den Wert in der ersten Spalte (0) des Modells nur, wenn der Wert im zweiten ModellColumn (1) 3 entspricht 3

Ich hoffe, das könnte jemandem etwas Zeit helfen.

Andere Tipps

Soweit ich weiß, ist es nicht möglich. Sie müssen Eigenschaften des benutzerdefinierten Renderers verwenden, die automatisch durch den Code eingestellt werden, der die Rendering -Funktion aufruft. (Wie text Eigentum von CellRendererText - Der Rendering-Code erhält den Text nicht aus dem Baummodell, aber das Baummodell legt das fest text Eigentum des Renderers vor dem Aufruf des Rendering -Code.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top