gtk.ListStore().clear() funktioniert nicht

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

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

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 (former) Modvoice
Antworten