我正在为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(),因为我需要使用'saved'事件处理程序。 (最终我在保存文档时尝试做某事)
那么,为什么window.get_views()在第一次打开Gedit时没有返回任何视图? (并且只有在禁用和重新设置插件时才会这样做)
另外,如果我'打印window.get_views(),同样的事情也会发生。它将打印一个空列表,但如果它禁用/重新启用该插件,我会得到一个包含所有视图的列表。
答案 0 :(得分:4)
这是因为当你的插件被激活时,你还没有任何标签。在插件激活后创建标签。您可能希望收听"tab-added"
和"tab-removed"
信号来解决此问题。