2

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)

メニューは期待どおりに表示されますが、私が理解していないのは、以前にメニューに割り当てられていたアクセラレータキーを他のメソッドやモジュールから変更する方法です。
accelの変数値(shortcut[0]およびshortcut[1])を変更しても、メニューエントリは自動的に更新されませんでした。助けてください

4

1 に答える 1

3

このようにできます。(免責事項:私はその場でCから翻訳しています)

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

これにより、たとえば Ctrl-T になります。Ctrl-T が既に使用されている場合、False手段は新しいアクセラレータを設定しません。

于 2010-12-23T22:34:01.737 に答える