1

複数の異なるウィンドウ/ダイアログを単一のGtkBuilderファイルに保存してから、これらのウィンドウを異なるクラス(各クラスは異なるウィンドウに対応)にロードするにはどうすればよいですか?たとえば、現在私は次のようなことをしています。

def __init__(self):
    self.builder = gtk.Builder()
    self.builder.add_from_file('gtkbuilder.xml')
    self.welcome_dialog = self.builder.get_object('welcome_dialog')
    self.builder.connect_signals(self)
    self.welcome_dialog.show()

これにより、機能するソフトウェアが生成されますが、次のようなあらゆる種類の警告が出力されます。

welcome_dialog.py:38: RuntimeWarning: missing handler 'on_contract_window_response'
  self.builder.connect_signals(self)

他のすべてのウィンドウに対してGladeで定義した信号ハンドラーごとに。私がやりたいのは、この単一のウィンドウ/ダイアログの信号を接続し、他のすべてを無視することだけだと思いますが、それを行う方法がわかりません。または、ひどく間違ったことをしているので、各ウィンドウを別のGtkBuilderファイルに分割する必要がありますか?または、すべての可能なウィンドウの信号を同時に(初期)時間に接続しますか?

4

1 に答える 1

7

を使用gtk.Builder.add_from_fileすると、ファイルからBuilderオブジェクトに階層全体が追加されます。これが、シグナル接続の警告が表示される理由です。呼び出しはすべてbuilder.connect_signals()を接続しようとします。

代わりに、を使用gtk.Builder.add_objects_from_fileして、現在のクラスで処理する個々のトップレベルウィンドウまたはウィジェットを選択します。

于 2011-06-07T01:41:03.660 に答える