Liststore in einem TreeView aktualisieren --> Wie?

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ö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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

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.
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

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)
Antworten