私はgtk.builderのすべてのシグナルをこれに接続します:
ui_builder = gtk.Builder()
ui_builder.add_from_file('main.ui')
self.win_main = builder.get_object('win_main')
ui_builder.connect_signals(self)
どうすればすべての信号をブロック/切断できますか?(そして再接続しますか?)
前もって感謝します!
私はgtk.builderのすべてのシグナルをこれに接続します:
ui_builder = gtk.Builder()
ui_builder.add_from_file('main.ui')
self.win_main = builder.get_object('win_main')
ui_builder.connect_signals(self)
どうすればすべての信号をブロック/切断できますか?(そして再接続しますか?)
前もって感謝します!
gtk.builderは便利なconnect_signals()を提供します。シグナルが接続されると、プログラムでシグナルをブロックまたは切断するのはあなた次第です。
シグナルのブロックとハンドラーの切断の両方に関するPyGTKのドキュメントは次のとおりです。
http://www.pygtk.org/pygtktutorial/ch-advancedeventsandsignals.html
このような場合は、手動でシグナルを接続し gtk.Builder.connect_signals
ます。このメソッドはハンドラーIDを返さないため、シグナルを操作することはできません。そのハンドラーがないと、シグナルを操作できません。
私の場合、大したことではない信号のほんの2、3でした。
私が今していること:忘れてくださいgtk.builder.connect_signals
。
だからあなたのコードの後:
ui_builder = gtk.Builder()
ui_builder.add_from_file('main.ui')
self.win_main = builder.get_object('win_main')
私はこれに似たものを持っているでしょう:
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)
これは、最初のクイックチェックの後で一種の作業のようです。