¿Cómo escribir Gtk.CellRenderer personalizado en python y GTK 3?

Debo escribir mi propio procesador de celdas con el botón, se me ocurrió esto:

#!/usr/bin/env python3 from gi.repository import Gtk class CellRendererButton(Gtk.CellRenderer): def __init__(self): Gtk.CellRenderer.__init__(self) def get_size(self, widget, cell_area): buttonHeight = cell_area.height buttonWidth = buttonHeight return (0, 0, buttonWidth, buttonHeight) def render(self, window, widget, background_area, cell_area, expose_area, flags): style = widget.get_style() x, y, buttonWidth, buttonHeight = self.get_size() style.paint_box(window, widget.get_state(), Gtk.SHADOW_ETCHED_OUT, expose_area, widget, None, 0, 0, buttonWidth, buttonHeight) class MyWindow(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title = 'T', default_width = 200, default_height = 300) self.connect('destroy', self.__onDestroy) self.__createGUI() self.show_all() def __createGUI(self): box = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) listStore = Gtk.ListStore(str, str) treeView = Gtk.TreeView(listStore) textRenderer = Gtk.CellRendererText() textColumnA = Gtk.TreeViewColumn(None, textRenderer) textColumnB = Gtk.TreeViewColumn(None, textRenderer) buttonRenderer = CellRendererButton() buttonColumn = Gtk.TreeViewColumn(None, buttonRenderer) textColumnA.add_attribute(textRenderer, 'text', 0) textColumnB.add_attribute(textRenderer, 'text', 1) treeView.append_column(textColumnA) treeView.append_column(textColumnB) treeView.append_column(buttonColumn) listStore.append(('my string', 'my string')) self.add(treeView) def __onDestroy(self, e): Gtk.main_quit() t = MyWindow() Gtk.main() 

pero no funciona: / Recibo muchos errores como:

 (game.py:4736): Gtk-CRITICAL **: gtk_cell_renderer_render: assertion `GTK_CELL_RENDERER_GET_CLASS (cell)->render != NULL' failed 

Me estoy perdiendo algo? ¿Hay algo más que deba hacer para que funcione?

Debes nombrar tus métodos do_get_size() y do_render() . Estos son nombres especiales que le permiten a GTK saber que está anulando el método virtual de la clase principal.