2013-11-17 4 views
0

Я пытаюсь перехватить текст, введенный в Редактор ячеек объекта wx.grid, создав собственный редактор ячеек и установив его как редактор ячейки моей сетки по умолчанию.Inheriting wx.grid.GridCellTextEditor

В качестве теста я сделал следующее:

class CellEditor(wx.grid.GridCellTextEditor): 
    def __init__(self): 
     wx.MessageBox("Init") 
     super(CellEditor, self).__init__() 

    def BeginEdit(self, *args, **kwargs): 
     wx.MessageBox("Begin Edit") 
     super(CellEditor, self).BeginEdit(*args, **kwargs) 

Хотя окно сообщения «Init» показывает вверх, никогда не появится окно с сообщением «начать редактирование». Даже если я явно вызываю метод BeginEdit() из отладчика, окно сообщения не отображается. Это заставляет меня думать, что метод BeginEdit переписывается оригинальным методом во время инициализации. Приходите, чтобы кто-нибудь помог мне понять, что происходит?

ответ

0

Я не совсем понимаю магию за специальными редакторами ячеек, но это example может быть хорошей отправной точкой. Кажется, вам нужно переопределить больше методов, чтобы заставить его работать.

Также я был бы осторожен с переопределяющими методами, ваш метод подписи BeginEdit(self, *args, **kwargs) не соответствует обложке BeginEdit(self, row, col, grid). Я сделал несколько быстрых тестов, чтобы увидеть, можете ли вы переопределить такие методы, и кажется, что это так, но это запутывает и может привести к ошибкам.

+0

Благодарим вас за пример! – jsexauer