Seite 1 von 1

Liststore in einem TreeView aktualisieren --> Wie?

Verfasst: Mittwoch 6. Juli 2005, 06:35
von Damaskus
Hallo,
ich hab ein Treeview / Liststore mit Daten aus einer Liste gefüttert. Klappt soweit prima. Nur wie aktualisiere ich die Liststore wenn ich die Daten in der Liste ändere?

Code: Alles auswählen

import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade

schleifenliste = [['test', 'tester'], ['test2', 'tester']]

class Hauptfenster:
  
  def __init__(self):
    global gladedatei
    gladedatei = gtk.glade.XML('hauptfenster.glade', 'gladeHauptfenster')
    self.schleifenansicht()

  def schleifenansicht(self):
    schllistestore = gtk.ListStore(str, str)
    eintraege = len(schleifenliste)
    
    for i in range(eintraege):
      schllistestore.insert(i, row=schleifenliste[i])
      
    self.schllistewidget = gladedatei.get_widget('schleifentreeview')
    self.schllistewidget.set_model(schllistestore)
    cellrenderer = gtk.CellRendererText()
    
    columnschleife = gtk.TreeViewColumn("Schleifen", cellrenderer, text=0)
    columnschleife.set_resizable(resizable=True)
    self.schllistewidget.append_column(columnschleife)
    
    columnempf = gtk.TreeViewColumn("Empfaenger", cellrenderer, text=1)
    columnempf.set_resizable(resizable=True)
    self.schllistewidget.append_column(columnempf)

Hauptfenster()
gtk.main()
Thx
Damaskus

Verfasst: Mittwoch 6. Juli 2005, 12:45
von Leonidas
Öhm, da musst du gleub ich etwas mit 'Model' rumtricksen.. wie wäre es wenn du auch die Glade-Datei postet, dann könnte ich es mir direkt an deinem Code überlegen?

Verfasst: Mittwoch 6. Juli 2005, 21:53
von ProgChild
Also ich würde mir mal die Variable "schllistestore" merken, z.B. als Klassen Variable, um dann mit z.B. insert neue Werte hinzufügen zu können.

Verfasst: Mittwoch 6. Juli 2005, 21:53
von Damaskus
Leonidas hat geschrieben:Öhm, da musst du gleub ich etwas mit 'Model' rumtricksen.. wie wäre es wenn du auch die Glade-Datei postet, dann könnte ich es mir direkt an deinem Code überlegen?
Das hat schon geholfen :wink:
Hier die Änderung:

Code: Alles auswählen

  def schleifenansicht(self, update):
    if update == 'True':
      eintraege = len(schleifenliste)
      self.schllistewidget = gladedatei.get_widget('schleifentreeview')
      self.schlliststore = self.schllistewidget.get_model()
      self.schlliststore.clear()
      
      for i in range(eintraege):
        self.schlliststore.insert(i, row=schleifenliste[i])
      
    else:
      schllistestore = gtk.ListStore(str, str, str, str)
      eintraege = len(schleifenliste)
      
      for i in range(eintraege):
        schllistestore.insert(i, row=schleifenliste[i])
      
      self.schllistewidget = gladedatei.get_widget('schleifentreeview')
      self.schllistewidget.set_model(schllistestore)
      
      cellrenderer = gtk.CellRendererText()

      columnart = gtk.TreeViewColumn("Art", cellrenderer, text=0)
      columnart.set_resizable(resizable=True)
      self.schllistewidget.append_column(columnart)

      columnschleife = gtk.TreeViewColumn("Schleifen", cellrenderer, text=1)
      columnschleife.set_resizable(resizable=True)
      self.schllistewidget.append_column(columnschleife)

      columnkom = gtk.TreeViewColumn("Kommentar", cellrenderer, text=2)
      columnkom.set_resizable(resizable=True)
      self.schllistewidget.append_column(columnkom)

      columnempf = gtk.TreeViewColumn("Empfaenger", cellrenderer, text=3)
      columnempf.set_resizable(resizable=True)
      self.schllistewidget.append_column(columnempf)