2011-11-07 68 views
13

當目標物體被破壞時,信號會自動斷開嗎?不記錄來自g_signal_connect()的信號ID,我可以刪除該信號嗎?如何斷開Gtk的信號?

回答

7

當然,當目標對象被破壞時,連接到它的信號將被刪除(否則會有大量內存泄漏,但請閱讀g_signal_connect_object上的警告)。但是,要撥打g_signal_handler_disconnect,您需要g_signal_connect和朋友給出的處理ID。

1

您可以使用* handler_block_by_func *和* handler_unblock_by_func *方法。

實施例(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) 

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