开发者

How to change accel keybindings in gtk+ menu programmatically?

Coded in pygtk, I created the program menu this way:

def _create_menu
    manager = self._window.get_ui_manager()
    self.开发者_StackOverflow中文版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)

The menu shows up as expected, but what I don't understand is: how to change accelerator keys previously assigned to the menu from other methods and/or modules?

Changing accel's variable values (shortcut[0] and shortcut[1]) did not automatically updates the menu entry. Please help


You can do it like this. (Disclaimer: I'm translating it from C on the fly)

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

This makes it Ctrl-T, for example. The False means don't set the new accelerator if Ctrl-T is already used.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜