Domanda

mi collego tutti i segnali in gtk.builder con questo:

ui_builder = gtk.Builder()
ui_builder.add_from_file('main.ui')
self.win_main = builder.get_object('win_main')
ui_builder.connect_signals(self)

Come potrei bloccare / scollegare tutti / tutti i segnali, per favore? (E ricollegare?)

Grazie in anticipo!

È stato utile?

Soluzione

gtk.builder fornisce connect_signals () come vantaggio, una volta che i segnali sono collegati tocca a voi per bloccare programatically scollegare o segnali.

Ecco la documentazione PyGTK per entrambi i segnali di blocco e gestori di sezionamento:

http://www.pygtk.org/pygtktutorial/ch-advancedeventsandsignals.html

Altri suggerimenti

Quello che faccio in questo caso, è quello di collegare manualmente il segnale, non con gtk.Builder.connect_signals perché questo metodo non restituisce loro handler ids, e senza tale gestore non è possibile manipolare il segnale.

Nel mio caso non era solo un paio di segnali grosso problema.

quello che sto facendo in questo momento:. Dimenticare gtk.builder.connect_signals

così dopo il vostro codice:

ui_builder = gtk.Builder()
ui_builder.add_from_file('main.ui')
self.win_main = builder.get_object('win_main')

vorrei avere qualcosa di simile a questo:

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)

che sembra una sorta di lavoro dopo un primo rapido controllo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top