PyGridTable AppendRows

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Hallo

Irgendwie klappt bei mir das anfügen von Rows nicht :(

Code: Alles auswählen

class TableBuchen(wx.grid.PyGridTableBase):
    def __init__(self, data, rowLabels = [], colLabels=[]):
        wx.grid.PyGridTableBase.__init__(self)
        self.rowLabels = rowLabels
        self.colLabels = colLabels
        self.data = data

    def GetNumberRows(self):
        return len(self.rowLabels)

    def GetNumberCols(self):
        return len(self.colLabels)

    def IsEmptyCell(self, row, col):
        return self.data.get((row, col)) is not None

    def GetValue(self, row, col):
        value = self.data.get((row, col))
        if value == None:
            return ''
        else:
            return value

    def SetValue(self, row, col, value):
        self.data[(row, col)] = value

    def AppendRows(self, numRows=1):
        for i in range(numRows):
            self.rowLabels.append(str(len(self.rowLabels)+1))
        return True

    def AppendCols(self, numCols=1):
        return False

    def GetColLabelValue(self, col):
        return str(self.colLabels[col])

    def GetRowLabelValue(self, row):
        return str(self.rowLabels[row])

    def SetColLabelValue(self, col, value):
        self.colLabels[col] = str(value)

    def SetRowLabelValue(self, row, value):
        self.rowLabels.clear[row] = str(value)

class GridBuchen(wx.grid.Grid):
    def __init__(self, parent):
        wx.grid.Grid.__init__(self, parent, size=(399, 299))
        temp = sqlbase.Query("Select * from Buchungen")
        data = {}
        rowlabels=[]
        collabels=[]
        for i in range(len(temp)):
            rowlabels.append(i)
            for x in range(len(temp[i])):
                data[(i,x)]= temp[i][x]
        for i in range(6):
            collabels.append(i)

        table = TableBuchen(data, rowlabels, collabels)
        self.SetTable(table, True)
        self.AppendRows(2)
        self.ForceRefresh()

        print table.GetNumberRows()
        print self.GetNumberRows()
        print self.GetNumberRows()
als Resultat bei den Aufrufen erhalte ich

7
5
5

D.h. self.rowLabels wurde vergrössert aber sonst ist nichts passiert?

Im Buch wxPython in Action steht, das man die Funktion AppendRows überschreiben muss, diese Funktion müsse entweder True oder False zurückgeben. Aber gebe ja immer True zurückt :roll:
Antworten