我开发了一个插件来代替Gedit中的一些功能。此功能通过一个菜单项呈现。
我如何删除当前菜单项来添加一个相同的新菜单项,除了这个新菜单项将绑定到我的回调?
我没有在现有的应用程序上尝试它,但总的来说它可以归结为以下步骤:
- 获取
UIManager
:GObject.property(type=Gedit.Window).get_ui_manager()
。 - 通过
UIManager.get_ui
获取当前UI定义。使用它来确定要删除的项。 - 使用
Builder.get_object
使用UI定义中的名称检索项目。 - 我不确定菜单的,但在检索项目上,你现在可以简单地调用
destroy
。或者,你可以得到主菜单项,并删除孩子你想要的get_children
方法(即for i in menu.get_children(): menu.remove(i)
,其中i
是你想要摆脱的孩子:你可能要检查它知道哪一个要删除。 - 最后,用
UIManager.ensure_update
显式刷新UI。
如上所述,我没有尝试过,我也没有附近的Linux安装来验证这一点,但我希望这给你足够的指针来达成解决方案。