gtk.ListStore().clear() funktioniert nicht

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

gtk.ListStore().clear() funktioniert nicht

Beitragvon bmh1980 » Sonntag 15. Mai 2005, 23:55

Hallo.

Bisher habe ich nur mit Skripten gearbeitet, in denen einfach mit def diverse Funktionen definiert wurden.

Da hat folgendes immer geklappt.

Code: Alles auswählen

def main_window():
    global treeview1, liststore1
    ...
    liststore1 = gtk.ListStore(str, str, str)

    treeview1 = tree.get_widget('treeview1')
    treeview1.set_model(liststore1)

    cellrenderer1 = gtk.CellRendererText()

    treeviewcolumn1 = gtk.TreeViewColumn()
    treeviewcolumn1.pack_start(cellrenderer1)
    treeviewcolumn1.add_attribute(cellrenderer1, 'text', 0)

    treeviewcolumn2 = gtk.TreeViewColumn()
    treeviewcolumn2.pack_start(cellrenderer1)
    treeviewcolumn2.add_attribute(cellrenderer1, 'text', 1)

    treeviewcolumn3 = gtk.TreeViewColumn()
    treeviewcolumn3.pack_start(cellrenderer1)
    treeviewcolumn3.add_attribute(cellrenderer1, 'text', 1)

    for column in [treeviewcolumn1, treeviewcolumn2, treeviewcolumn3]:
        treeview1.append_column(column)
    ...

def refresh(*args):
    liststore1.clear()
    ...


Jetzt, der neue Code funktioniert nicht.

Code: Alles auswählen

class MainWindow:
    def __init__(self):
        ...
        self.liststore1 = gtk.ListStore(str, str, str)

        self.treeview1 = tree.get_widget('treeview1')
        self.treeview1.set_model(self.liststore1)

        cellrenderer1 = gtk.CellRendererText()

        treeviewcolumn1 = gtk.TreeViewColumn()
        treeviewcolumn1.pack_start(cellrenderer1)
        treeviewcolumn1.add_attribute(cellrenderer1, 'text', 0)

        treeviewcolumn2 = gtk.TreeViewColumn()
        treeviewcolumn2.pack_start(cellrenderer1)
        treeviewcolumn2.add_attribute(cellrenderer2, 'text', 1)

        treeviewcolumn3 = gtk.TreeViewColumn()
        treeviewcolumn3.pack_start(cellrenderer1)
        treeviewcolumn3.add_attribute(cellrenderer3, 'text', 2)

        for column in [treeviewcolumn1, treeviewcolumn2, treeviewcolumn3]:
            self.treeview1.append_column(column)
        ...

    def refresh(self):
        self.liststore1.clear()
        ...


Kann mir jemand erklären warum? Ich kann einfach keinen Grund finden. Zumald der Rest von refresh() ausgeführt wird. Nur hab ich dann halt doppelte Einträge in meinem ListView. Oder halt mehr, wenn öfter aktuallisiert wird.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 28. Mai 2005, 07:23

Könntest du bitte mehr von deinem Code posten, so dass man es auch ausführen kann?
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder