Как запустить gtk.Builder.connect_signals несколько раз? - PullRequest
0 голосов
/ 27 июня 2011

Это дополнительный вопрос к этому другому .

Я пытаюсь расширить gtk.Builder, но я обнаружил, что после создания экземпляра можно вызывать метод connect_signals только один раз : если вызывается более одного разалюбой вызов после второго вернет None (что означало бы: все сигналы были подключены, что является явной ложью!).

Проблема в том, что в моем проекте мне нужно было бы обойтиСоздание экземпляра для различных модулей (каждый из них имеет некоторые обработчики для управления графическим интерфейсом), но таким образом я не могу.

Я пытался понять, смогу ли я понять, как и где gtk.Builder хранит имена обработчиков, которые были назначены с помощью графического интерфейса Glade , чтобы написать собственный метод для преодоления этого ограничения, но после более чем часа консольных экспериментов я все еще не понимаю, где хранится эта информация.

Любая помощь или указатель высоко ценится!:)

Ответы [ 2 ]

1 голос
/ 13 июля 2011

То, что connect_signals работает только один раз, является старым , но недокументированным ограничением кода G GtkBuilder C. Особенно из Python нет способа получить доступ к его внутренним элементам, чтобы исправить это.

Вместо строителя вы можете передать словарь. После того, как все добавили свои обработчики, вы вызываете connect_signals с ним.

0 голосов
/ 30 июня 2011

Я думаю, что если вы хотите вызывать connect_signals несколько раз, вы должны отключиться между ними, вроде как

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