Nautilus右键菜单中的子菜单项

4 投票
1 回答
1887 浏览
提问于 2025-04-15 16:41

我正在尝试为nautilus写一个扩展,目的是在右键点击文件时出现的菜单中添加一个选项(如图所示)。

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,

顺便说一下,我没有加上“# FIX ME: 为什么这个不工作?”这句话,实际上它是示例中包含的。

但是,这段代码并没有正常工作。即使我把第二个函数去掉,只留下第一个,它也还是不行。

如果有人能帮帮我,我会非常感激,谢谢。

1 个回答

4

我找到了解决办法。

  1. 你需要声明一个 init 函数。
  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,
    

撰写回答