gtk.Builder.connect_signalsを複数回実行する方法は?

glade gtk pygtk python user-interface
gtk.Builder.connect_signalsを複数回実行する方法は?

これはフォローアップの質問ですhttps://stackoverflow.com/questions/6487677/ [この他の1つ]。

私はgtk.Builderを拡張しようとしていますが、ビルダーがインスタンス化されると、http://www.pygtk.org/docs/pygtk/class-gtkbuilder.html#method-gtkbuilder—​connectしか呼び出せないことがわかりました-signals [connect_signals]メソッドonce *:2回以上呼び出された場合、2回目以降の呼び出しは `None`を返します(つまり、すべての信号が接続されたということです。

問題は、私の設計では、ビルダーインスタンスをさまざまなモジュールに渡す必要があることです(各モジュールにはGUIを管理するためのハンドラーがいくつかあります)が、この方法ではできません。

この制限を克服する独自のメソッドを作成するために、Gtk.BuilderがGlade GUIに割り当てられたハンドラー名を保存する方法/場所を理解できるかどうかを確認しようとしましたが、1時間以上のコンソール実験の後、この情報が保存されている場所を理解していません。

どんな助けやポインタも大歓迎です! 🙂

  0  1


ベストアンサー

`connect_signals`が一度だけ動作するのは、https://bugzilla.gnome.org/show_bug.cgi?id = 554301 [old]ですが、GtkBuilder Cコードの文書化されていない制限です。 特にPythonからは、その内部構造にアクセスしてそれを修正する方法はありません。

ビルダーの代わりに、辞書を渡すことができます。 全員がハンドラーを追加したら、それを使用して「connect_signals」を呼び出します。

1


connect_signalsを複数回呼び出したい場合は、途中で切断する必要があります

x = self.menu.connect('activate', self.func1)
self.menu.disconnect(x)
x = self.menu.connect('activate', self.func2)

-1


タイトルとURLをコピーしました