2010-12-22 12 views
2

in pygtk Coded, habe ich das Programm-Menü auf diese Weise:Wie accel Tastenkombinationen in GTK + Menü programmgesteuert ändern?

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) 

Das Menü zeigt wie erwartet, aber was ich nicht verstehe, ist: Wie zuvor Zugriffstasten auf das Menü von anderen Methoden zugewiesen ändern und/oder Module?
Das Ändern der Variablenwerte von accel (Verknüpfung [0] und Verknüpfung [1]) aktualisiert den Menüeintrag nicht automatisch. Bitte helfen Sie

Antwort

3

Sie können es so machen. (Disclaimer: Ich übersetze es von C on the fly)

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

Dies macht es Strg-T, zum Beispiel. Die False bedeutet, dass der neue Beschleuniger nicht gesetzt wird, wenn Strg-T bereits verwendet wird.

+0

Danke. Genau das habe ich gesucht. Ich habe deinen Vorschlag ausprobiert und es hat funktioniert –