 <p>what I am doing right now: forget about <code>gtk.builder.connect_signals</code>.</p> <p>so after your code:</p> <pre><code>ui_builder = gtk.Builder() ui_builder.add_from_file('main.ui') self.win_main = builder.get_object('win_main') </code></pre> <p>I would have something similar to this:</p> <pre><code>list_of_handler_ids = [] import libxml2 doc = libxml2.parseFile('main.ui') ctxt = doc.xpathNewContext() signals = ctxt.xpathEval('//signal') for s in signals: handler = getattr(self, s.prop('handler')) signaller = getattr(self.win_main, s.parent.prop('id')) handler_id = signaller.connect(s.prop('name'), handler) list_of_handler_ids.append(handler_id) </code></pre> <p>which seems to sort of work after a first quick check.</p>