gtk treeview: coloca los botones de imagen en las filas

Para cada fila en mi vista de árbol, quiero 4 botones de imagen uno al lado del otro. Actuarán como botones de radio, y solo se podrá activar uno a la vez. Cada botón tiene una imagen ‘on’ y ‘off’.

¿Cómo hago esto? Me di cuenta de cómo colocar las imágenes allí y cómo colocar los botones de alternar, pero parece que esto requiere un poco más de esfuerzo, ya que no hay un procesador de celdas preconstruido que haga lo que quiero.

Básicamente, lo que solucionó mi problema es descubrir cómo hacer que una imagen en un gtk.treeview hacer clic. ¿algunas ideas?

Eche un vistazo a este ‘ http://www.daa.com.au/pipermail/pygtk/2010-March/018355.html ‘. Le muestra cómo hacer un gtk.CellRendererPixbuf activable, y capaz de conectarse a una señal de evento de clic.

 cell = CellRendererPixbufXt() cell.connect('clicked', func) 

Actualizar

Como se señaló en esta respuesta, o la referencia dada no funciona como se anuncia. Falta el método do_activate, que debe emitir la señal en la que se hizo clic. Una vez hecho esto, entonces el cell.connect funcionará.

Lo siento si esta respuesta engaña a alguien.

Aquí hay una versión corta sin necesidad de kiwi .

 class CellRendererClickablePixbuf(gtk.CellRendererPixbuf): __gsignals__ = {'clicked': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)) } def __init__(self): gtk.CellRendererPixbuf.__init__(self) self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE) def do_activate(self, event, widget, path, background_area, cell_area, flags): self.emit('clicked', path) 

Esto es lo que funcionó para mí:

 class CellRendererClickablePixbuf(gtk.CellRendererPixbuf): gsignal('clicked', str) def __init__(self): gtk.CellRendererPixbuf.__init__(self) self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE) def do_activate(self, event, widget, path, background_area, cell_area, flags): self.emit('clicked', path)