wxpython PyGridTableBase

Hi,
I want to use editable choice editor with PyGridTableBase. When I edit
a cell it is crashing What is error in my code?
My python code:

import wx
import wx.grid as gridlib

class MyTableBase(gridlib.PyGridTableBase):
    def __init__(self):
        gridlib.PyGridTableBase.__init__(self)

        self.data = {0:["value 1", "value 2"],
                     1:["value 3", "value 4", "value 5"]}

        self.column_labels = [unicode(u"Label 1"),
                              unicode(u"Label 2"),
                              unicode(u"Label 3")]

        self._rows = self.GetNumberRows()
        self._cols = self.GetNumberCols()

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

    def GetNumberRows(self):
        return len(self.data.keys())

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

    def GetValue(self, row, col):
        "İlgili hücrenin değerini döndürür"
        try:
            if col > self.GetNumberCols():
                raise IndexError
            return self.data[row][col]
        except IndexError:
            return None

    def IsEmptyCell(self, row, col):
        if self.data[row][col] is not None:
            return True
        else:
            return False

    def GetAttr(self, row, col, kind):
        attr = gridlib.GridCellAttr()
        editor = gridlib.GridCellChoiceEditor(["xxx", "yyy", "zzz"],
                                              allowOthers = True)
        attr.SetEditor(editor)
        attr.IncRef()
        return attr

class MyDataGrid(gridlib.Grid):
    def __init__(self, parent):
        gridlib.Grid.__init__(self, parent, wx.NewId())
        self.base_table = MyTableBase()
        self.SetTable(self.base_table)

if __name__ == '__main__':
    app = wx.App(redirect = False)
    frame = wx.Frame(None, wx.NewId(), title = u"Test")
    grid_ = MyDataGrid(frame)
    frame.Show()
    app.MainLoop()

Hi,

pygridtablenozkan.py (2.25 KB)

···

On 16/03/2010 10:25, nozkan wrote:

Hi,
I want to use editable choice editor with PyGridTableBase. When I edit
a cell it is crashing What is error in my code?
   

It looks like you can't create your editor in the GetAttr method.

You should also declare your encoding of your module as you use non ascii chars in your doc string.

Werner

Hi,
Thank you for your help.

···

On 16 Mart, 12:58, werner <wbru...@free.fr> wrote:

Hi,

On 16/03/2010 10:25, nozkan wrote:> Hi,
> I want to use editable choice editor with PyGridTableBase. When I edit
> a cell it is crashing What is error in my code?

It looks like you can't create your editor in the GetAttr method.

You should also declare your encoding of your module as you use non
ascii chars in your doc string.

Werner

pygridtablenozkan.py
2KGörüntüleİndir