如何显示Gio.MenuItem的加速器

fos*_*dom 4 rhythmbox python-2.7 gtk3

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

PIC

正如您所看到的,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)
Run Code Online (Sandbox Code Playgroud)

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

完整的来源是:

fos*_*dom 7

这个拼图游戏的缺失部分是认识到Gio.MenuItems本身具有属性值.

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

item.set_attribute_value("accel", GLib.Variant("s", "<Alt>Z"))
Run Code Online (Sandbox Code Playgroud)

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

item = 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执行相同的角色.