4

我正在尝试显示 Gio.Menuitem 的快捷键加速器

图片

如您所见,RandomAlbum菜单项没有显示加速器 - 但是,我添加了加速器并将其成功连接到 Gio.MenuItem,因为 menuitem 响应键盘快捷键Alt+Z

我正在使用的代码片段如下:

action = Gio.SimpleAction.new(action_name, None)
app = Gio.Application.get_default()
app.add_accelerator("<alt>Z", "app."+action_name, None)

item = Gio.MenuItem()
item.set_detailed_action('app.' + action_name)
item.set_label("RandomAlbum")

app.add_plugin_menu_item('tools', "unique name", item)

任何想法为什么加速器不显示 - 但仍然响应键盘控制?

完整来源在这里:

4

1 回答 1

7

这个拼图缺少的部分是意识到 Gio.MenuItems 本身具有属性值。

所以在这种情况下,在将菜单项添加到 GMenu 之前,所需的语法是:

item.set_attribute_value("accel", GLib.Variant("s", "<Alt>Z"))

要完成答案,您还可以通过以下方式为菜单项设置标签和操作:

项目 = Gio.MenuItem()
item.set_attribute_value("label", GLib.Variant("s", "RandomAlbum"))
item.set_attribute_value("action", GLib.Variant("s", "app."+action_name))

然而方法set_labelset_detailed_action执行相同的角色。

于 2013-05-31T15:24:40.510 回答