我正在开发一个nautilus扩展,我有以下代码:
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import urllib
import gtk
import pygtk
import nautilus
import gconf
import gtk.glade
class Slide (nautilus.MenuProvider):
f = None
def __init__(self):
self.client = gconf.client_get_default()
self.f = gtk.glade.XML( "papel.glade" )
self.window = self.f.get_widget("window1")
gtk.main()
def oi (self):
self.window.show()
def menu_activate_cb(self, menu, file):
self.oi()
def get_file_items(self, window, files):
if len(files) != 1:
return
item = nautilus.MenuItem('NautilusPython::slide_file_item', 'Slide', 'Slide')
item.connect('activate', self.menu_activate_cb, files[0])
return item,
def get_background_items(self, window, file):
item = nautilus.MenuItem('NautilusPython::slide_item', 'Slide', 'Slide')
item.connect('activate', self.menu_background_activate_cb, file)
return item,
def menu_background_activate_cb(self, menu, file):
self.oi()
代码不起作用(幻灯片不会出现在上下文菜单中)。但如果我评论这些话:
self.f = gtk.glade.XML( "papel.glade" )
self.window = self.f.get_widget("window1")
gtk.main()
然后代码运行。我看不出有任何问题,有什么帮助吗?
答案 0 :(得分:1)
只尝试评论gtk.main()。如果它之后仍然运行我猜测因为nautilus已经运行,调用gtk.main()会启动一个新的gtk应用程序。与鹦鹉螺分开。您需要做的就是连接到nautilus并点击window.show(),您可以在oi方法中执行此操作。