【问题标题】:Submenu items in Nautilus right-click menuNautilus 右键菜单中的子菜单项
【发布时间】:2012-06-19 16:08:29
【问题描述】:

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

但是,我想在我的自定义菜单项中添加一个子菜单。

我下载了一个“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:我没有添加“#FIX ME:为什么这不起作用?”。这实际上包含在示例中

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

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: python gtk gnome nautilus


    【解决方案1】:

    我找到了解决办法。

    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,
      

    【讨论】:

    • 如果我想从不同的脚本将另一个子菜单添加到 'Nautilus::sbi' 中,我该怎么做?我必须先得到menu_item?不是吗?否则它会创建重复菜单。
    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多