这是一个后续问题to this other one。
我正在尝试扩展gtk.Builder但我发现一旦构建器被实例化,只能调用connect_signals方法一次:如果多次调用,任何调用之后第二个将返回None
(这意味着:所有信号都已连接,这是一个公然的谎言!)。
问题在于,在我的设计中,我需要将构建器实例传递给各个模块(每个模块都有一些用于管理GUI的处理程序),但这样,我不能。
我试着看看我是否能够理解gtk.Builder如何/存储分配了Glade GUI的处理程序名称,以便编写我自己的方法来克服这个限制,但是更多超过一小时的控制台实验,我仍然不明白这些信息的存储位置。
非常感谢任何帮助或指针! :)
答案 0 :(得分:1)
connect_signals
仅适用一次是old但未记录的GtkBuilder C代码限制。特别是从Python中,没有办法访问它的内部来弥补这一点。
您可以传递字典而不是构建器。在每个人都添加了处理程序后,您可以使用它来调用connect_signals
。
答案 1 :(得分:-1)
我认为如果你想多次调用connect_signals,你必须在中间断开连接,有点像
x = self.menu.connect('activate', self.func1)
self.menu.disconnect(x)
x = self.menu.connect('activate', self.func2)