如何运行gtk.Builder.connect_signals多次



这是另一个问题的后续问题。

我正在尝试扩展gtk。生成器,但我发现一旦实例化生成器,就只能调用connect_signals方法一次:如果调用不止一次,第二次之后的任何调用都将返回None(这意味着:所有信号都已连接,这是一个公然的谎言!)。

问题是,在我的设计中,我需要将构建器实例传递给各个模块(每个模块都有一些用于管理GUI的处理程序),但通过这种方式,我做不到。

我试着看看我是否能理解gtk的方式/位置。Builder存储在Glade GUI中分配的处理程序名称,以便编写自己的方法来克服这一限制,但经过一个多小时的控制台实验,我仍然不知道这些信息存储在哪里。

非常感谢任何帮助或指示!:)

connect_signals只工作一次是GtkBuilder C代码的一个古老但未记录的限制。特别是从Python中,没有办法访问其内部来弥补这一点。

你可以传递一本字典,而不是生成器。在每个人都添加了他们的处理程序之后,你就用它来调用connect_signals

我认为如果你想多次调用connect_signals,你必须在两者之间断开连接,有点像

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

相关内容

  • 没有找到相关文章

最新更新