2011-11-07 14 views
13

¿Las señales de voluntad se desconectarán automáticamente cuando se destruya el objeto de destino? Sin registrar la identificación de señal de g_signal_connect(), ¿puedo eliminar esa señal?¿Cómo desconectar la señal de Gtk?

Respuesta

7

Por supuesto, cuando se destruye el objeto de destino, se eliminan las señales conectadas a él (de lo contrario, habría una fuga de memoria masiva, pero lea la advertencia en g_signal_connect_object). Sin embargo, para llamar al g_signal_handler_disconnect, necesita la identificación del administrador dada por g_signal_connect y sus amigos.

1

Puede usar los métodos * handler_block_by_func * y * handler_unblock_by_func *.

Ejemplo (PyGTK):

def on_treeview_fixedexpenses_cursor_changed(self, widget): 
    self.checkbutton_fixedexpensetax.handler_block_by_func(self.on_checkbutton_fixedexpensetax_toggled) 
    self.updateCurrentFixedExpense() 
    self.checkbutton_fixedexpensetax.handler_unblock_by_func(self.on_checkbutton_fixedexpensetax_toggled) 

Fuente: http://www.pygtk.org/docs/pygobject/class-gobject.html

Cuestiones relacionadas