2009-12-04 143 views
3

我試圖寫一個鸚鵡螺的擴展,這一個項目到時用鼠標右鍵單擊文件(如圖像),在出現的菜單子菜單項

alt text

但是,我想添加一個子菜單到我的自定義菜單項。

我下載了一個'nautilus-python'包,其中包含了如何爲Nautilus編寫擴展的示例(到目前爲止,它證明是我找到的最好的/唯一的文檔)。在這裏面,是一個叫submenu.py文件,該文件包含以下內容:

import nautilus 

class ExampleMenuProvider(nautilus.MenuProvider): 

    def get_file_items(self, window, files): 
     menuitem = nautilus.MenuItem('ExampleMenuProvider::Foo', 'Foo', '') 

     submenu = nautilus.Menu() 
     menuitem.set_submenu(submenu) 

     menuitem = nautilus.MenuItem('ExampleMenuProvider::Bar','Bar','') 
     submenu.append_item(menuitem) 

     return menuitem, 

    # FIXME: Why isn't this working? 
    def get_background_items(self, window, file): 
     submenu = nautilus.Menu() 
     submenu.append_item(nautilus.MenuItem('ExampleMenuProvider::Bar', 'Bar', '')) 

     menuitem = nautilus.MenuItem('ExampleMenuProvider::Foo', 'Foo', '') 
     menuitem.set_submenu(submenu) 

     return menuitem, 

PS:我沒加「#整我:爲什麼心不是這方面的工作」。實際上包含在示例中

該代碼不起作用。即使我拿出第二個功能,只留下第一個功能,它也不起作用。

任何幫助,將不勝感激,謝謝。

回答

3

我找到了解決方案。

  1. 您需要一個初始化函數聲明。
  2. 不得不做出一些變量名稱更改上面的例子

    import nautilus 
    
    class ExampleMenuProvider(nautilus.MenuProvider): 
        def __init__(self): 
         pass 
    
        def get_file_items(self, window, files): 
         submenu = nautilus.Menu() 
    
         item = nautilus.MenuItem('Nautilus::sbi','Nau-T','image') 
         item.set_submenu(submenu) 
    
         item_two = nautilus.MenuItem('Nautilus::s','www','image') 
         submenu.append_item(item_two) 
    
         return item, 
    
+0

如果我想從不同的腳本添加另一個子菜單進入「鸚鵡螺:: SBI」,我怎麼能這樣做?我必須先得到menu_item?不是嗎?否則,它會創建重複菜單。 – 2017-07-08 15:26:31