如何以编程方式更改gtk +菜单中的加速键绑定?

时间:2010-12-22 22:34:35

标签: menu pygtk gtk key-bindings accelerator

在pygtk中编码,我用这种方式创建了程序菜单:

def _create_menu
    manager = self._window.get_ui_manager()
    self.action_group = gtk.ActionGroup("SomeActions")
    self.action_group.add_actions([
        ("Top", None, _("Main Menu")),
        ("Test", None, _("Test"), self.shortcut[0], _("Test1"), self.cb_on_test),
        ("Other", None, _("Other"), self.shortcut[1], _("Test2"), self.cb_on_other)])
    manager.insert_action_group(self.action_group, -1)
    self.ui_id = manager.add_ui_from_string(ui_str)

菜单按预期显示,但我不明白的是:如何从其他方法和/或模块更改先前分配给菜单的加速键? 更改加速度的变量值(快捷键[0]和快捷键[1])不会自动更新菜单项。请帮忙

1 个答案:

答案 0 :(得分:3)

你可以这样做。 (免责声明:我正在将它从C中翻译出来)

gtk.accel_map_change_entry('<Actions>/SomeActions/Test', gtk.keysyms.t, gtk.gdk.CONTROL_MASK, False)

这使得它成为Ctrl-T。 False表示如果已使用Ctrl-T,则不设置新加速器。