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

发布于 2024-10-09 00:41:05 字数 627 浏览 8 评论 0原文

在 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 的变量值(快捷方式 [0] 和快捷方式 [1])不会自动更新菜单项。请帮忙

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

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)

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷离° 2024-10-16 00:41:06

你可以这样做。 (免责声明:我正在即时从 C 语言翻译它)

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

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文