如何从插件Gedit中删除菜单项



我开发了一个插件来代替Gedit中的一些功能。此功能通过一个菜单项呈现。

我如何删除当前菜单项来添加一个相同的新菜单项,除了这个新菜单项将绑定到我的回调?

我没有在现有的应用程序上尝试它,但总的来说它可以归结为以下步骤:

  1. 获取UIManager: GObject.property(type=Gedit.Window).get_ui_manager()
  2. 通过UIManager.get_ui获取当前UI定义。使用它来确定要删除的项。
  3. 使用Builder.get_object使用UI定义中的名称检索项目。
  4. 我不确定菜单的,但在检索项目上,你现在可以简单地调用destroy。或者,你可以得到主菜单项,并删除孩子你想要的get_children方法(即for i in menu.get_children(): menu.remove(i),其中i是你想要摆脱的孩子:你可能要检查它知道哪一个要删除。
  5. 最后,用UIManager.ensure_update显式刷新UI。

如上所述,我没有尝试过,我也没有附近的Linux安装来验证这一点,但我希望这给你足够的指针来达成解决方案。