Zellenanzeiger

 

Zellenanzeiger

gtk.CellRenderer ist dafür zuständig, dem Benutzer die Daten anzuzeigen und ihn gegebenenfalls die Daten bearbeiten zu lassen. Für einige oft verwendete Datentypen definiert GTK fertige Unterklassen von gtk.CellRenderer:

  • gtk.CellRendererAccel für die Darstellung von Tastenkombinationen
  • gtk.CellRendererCombo für Daten, die in einer gtk.ComboBox dargestellt werden
  • gtk.CellRendererPixbuf für Bilder
  • gtk.CellRendererProgress für Zahlen, die als Fortschrittsbalken dargestellt werden.
  • gtk.CellRendererSpin zeigt Zahlen in einem Einstellfeld an
  • gtk.CellRendererText zeigt Strings als Text an.
  • gtk.CellRendererToggle zeigt Wahrheitswerte als Ankreuzfeld an.

Für andere Datentypen müssen Sie möglicherweise eigene Unterklassen schreiben.

Um einen Zellenzeiger zu einem Steuerungsobjekt hinzuzufügen, rufen Sie zuerst die Methode pack_start (pder ´pack_end`) des Steuerungsobjekts auf, um den Zellenanzeiger zu einem Kind des Steuerungsobjekts zu machen.

Mit add_attribute verbinden Sie dann ein Attribut des Zellenanzeigers mit einer Spalte des vom Steuerungsobjekts verwendeten Modells. Das bewirkt, dass für jede Zelle das angegebene Attribut mit dem Wert der angegebenen Spalte gefüllt wird.

Welches Attribut Sie benutzen müssen, hängt von der Klasse des Zellenanzeigers ab. Ein Zellenanzeiger kann auch mehrere Attribute verwenden. Für die vordefinierten Zellenanzeiger verwenden Sie normalerweise folgende Attribute:

Klasse Attribut
gtk.CellRendererAccel text
gtk.CellRendererCombo text
gtk.CellRendererPixbuf pixbuf
gtk.CellRendererProgress text (für den Text im Fortschrittssbalken)
gtk.CellRendererProgress value (für den Wert)
gtk.CellRendererSpin text
gtk.CellRendererText text
gtk.CellRendererToggle active

In den meisten Fällen können Sie folgende Funktion verwenden, um einen Zellenanzeiger zu einem Steuerungsobjekt hinzuzufügen:

1
2
3
4
5
   def add_cell_renderer(control, col_no=0, renderer=None, attr='text'):
       if renderer is None:
           renderer=gtk.CellRendererText()
       control.pack_start(renderer, True)
       control.add_attribute(renderer, attr, col_no)

Dabei ist control das Steuerungsobjekt, col_no die Spaltennummer des Modells, renderer der Zellenanzeiger (wenn Sie hier nichts angeben, wird eine Instanz von gtk.CellRendererText verwendet) und attr das Attribut des Zellenanzeigers.