Seite 1 von 1

gtk.ListStore().clear() funktioniert nicht

Verfasst: Sonntag 15. Mai 2005, 23:55
von bmh1980
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.

Verfasst: Samstag 28. Mai 2005, 07:23
von Leonidas
Könntest du bitte mehr von deinem Code posten, so dass man es auch ausführen kann?