fos*_*dom 4 rhythmbox python-2.7 gtk3
我正在尝试显示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)
Run Code Online (Sandbox Code Playgroud)
任何想法为什么加速器不显示 - 但仍然响应键盘控制?
完整的来源是:
这个拼图游戏的缺失部分是认识到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_label和set_detailed_action执行相同的角色.