2

我正在为 Gedit 开发一个插件。

import gedit

class ReloadOnSave(gedit.Plugin):

    def __init__(self):
        gedit.Plugin.__init__(self)

    def activate(self, window):
        for view in window.get_views():
            self.connect_handlers(view)

    def connect_handlers(self, view):
        print 'Reached here' // This doesnt happen on Gedit startup.

发生的情况是,当我打开 gedit(打开任意数量的选项卡)时,我看不到“到达这里”。但是,如果我进入插件菜单,并禁用和重新启用我的插件,我将打印“到达这里”(打开多少个标签就多少次)

我还需要 get_views(),因为我需要使用“已保存”事件处理程序。(最终我在保存文档时尝试做一些事情)

那么,为什么第一次打开 Gedit 时 window.get_views() 不返回任何视图?(并且只有在我禁用和重新启用插件时才会这样做)

此外,如果我执行“打印 window.get_views()”,也会发生同样的事情。它将打印一个空列表,但如果它禁用/重新启用插件,我会得到一个包含所有视图的列表。

4

1 回答 1

4

发生这种情况是因为当您的插件被激活时,您还没有任何选项卡。标签是在插件激活后创建的。你可能想听听"tab-added"and"tab-removed"信号来解决这个问题。

于 2010-11-12T14:32:09.480 回答