2010-10-04 66 views
1

我正在開發一個鸚鵡螺延伸和我有以下代碼:用Python編寫的Nautilus擴展時,它調用gtk.main不運行()

#!/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() 

然後代碼運行。我看不到這些線路有任何問題,有什麼幫助?

+2

你能否詳細說明「不行」? – 2010-10-05 00:27:21

+0

另一個建議是使用gtk.Builder代替gtk.glade.XML。 – 2010-10-05 16:56:53

回答

1

試試只評論gtk.main()。如果它仍然運行後,我猜測,因爲鸚鵡螺已經運行,調用gtk.main()啓動一個新的gtk應用程序。與鸚鵡螺分開。你所需要做的就是連接到nautilus並打開window.show(),你可以在你的oi方法中做。

相關問題