2011-11-07 4 views
13

대상 객체가 파괴되면 신호가 자동으로 끊어 집니까? g_signal_connect()에서 신호 ID를 기록하지 않으면 해당 신호를 제거 할 수 있습니까?Gtk의 신호를 끊는 방법?

답변

7

물론 대상 객체가 파괴되면 연결된 객체가 제거됩니다 (그렇지 않으면 막대한 메모리 누출이 있지만 g_signal_connect_object에서 경고를 읽습니다). 그러나 g_signal_handler_disconnect을 호출하려면 g_signal_connect 및 친구가 제공하는 처리기 ID가 필요합니다. 당신은 신호 처리기 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